0 / 0 / 0
Регистрация: 24.04.2017
Сообщений: 12
1
Excel

Ошибка при передаче значения переменной между модулями

15.07.2018, 14:19. Показов 1752. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В стандартном модуле глобально объявлена булева переменная isNewNeed, при открытии формы ей присваивается значение true.
Сразу же после открытия нажимаю на кнопку, в которой проверяется значение этой переменной и почему-то оно уже false.

Код в модуле:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
Option Explicit
Public ExcelStudents As String 
Public ExcelDorm As String 
Public itemSName As String, itemFName As String, itemPName As String, itemGroup As String
Public itemSalary As Double, itemGrade As Double
Public isMale As Boolean, isFemale As Boolean
Public isNewNeed As Boolean 'та самая переменная
 
Sub OpenMainForm()
    MainForm.Show
    isNewNeed = True
End Sub
Код в модуле формы (на всякий случай весь, ибо я не понимаю, где ошибка)
Проверка значение в последней процедуре BtnOpenForm_Click():

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Option Explicit
 
'Нажатие кнопки Загрузить для общежития, вызывает открытие книги
Private Sub btnAddDormInfo_Click()
    Call dlgOpenBook(ExcelDorm)
    lblExcelDorm.Caption = ExcelDorm
End Sub
 
'Открытие книги и запись ее имени в переданную по ссылке переменную
Sub dlgOpenBook(ByRef bookName As String)
    bookName = Application.GetOpenFilename _
                ("Excel files(*.xls*),*.xls*", 1, "Выбрать Excel файл", , False)
End Sub
 
'Создание пустой книги студентов
Sub CreateBook()
    bookPath = ThisWorkbook.Path 'путь к исходной папке
    Workbooks.Add
    ActiveWorkbook.SaveAs Filename:=bookPath & "\InputBook.xls"
    ExcelStudents = ActiveWorkbook.Path 'сохраняем ее имя в ExcelStudents
    ActiveWorkbook.Close 'закрывать????
    lblExcelStudents.Caption = ExcelStudents
End Sub
 
'Выбор файла со списком студентов
Sub btnAddList_Click()
    ExcelStudents = "111"
    Call dlgOpenBook(ExcelStudents)
    lblExcelStudents.Caption = ExcelStudents
    isNewNeed = False
End Sub
 
'проверка введенных данных
Private Sub btnAddStudent_Click()
    'проверка введенных данных
End Sub
 
'добавление данных из формы, вызывается в btnAddStudent_Click после проверки на корректность
Sub addInTable()
 
End Sub
 
Sub BtnOpenForm_Click() 'вот тут неправильное значение у isNewNeed
    InputFormGroup.Visible = True
    If isNewNeed = False Then
        'добавляем запись в ExcelStudents
    Else        
        Call CreateBook 'создаем книгу и присваиваем ее название переменной ExcelStudents _
        добавляем запись в ExcelStudents
    End If
End Sub
Впервые работаю с VBA и схожу с ума второй день от таких ошибок. Допускаю, что как-то не так объявляю переменную, ибо знания языка минимальные, но, может проблема в чем-то еще
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.07.2018, 14:19
Ответы с готовыми решениями:

Ошибка в конструкторе при передаче значения переменной из второй формы в первую
Добрый день! Помогите, пожалуйста. Из второй формы в первую передаю переменную string Sav:...

Ошибка при передаче переменной из метода
Требуется помощь по лабораторной работе по C# Windows Forms Проблема в передаче (выводе) значения...

Ошибка <unavailable synchronous data> при передаче переменной
Здравствуйте уважаемые программисты. Столкнулся с такой проблемой, как &lt;unavailable synchronous...

Трабл в передаче bool переменной значения ListBox->Selected
Решил попробовать простенький пример, ещё давно мне знакомый, так вот, когда пытаюсь скомпилировать...

3
1836 / 1152 / 353
Регистрация: 11.07.2014
Сообщений: 4,072
15.07.2018, 14:26 2
Лучший ответ Сообщение было отмечено Doctor_Who как решение

Решение

в строке 10 запускается форма, а присвоение True будет только тогда, когда форма закроется. Строки 10 и 11 поменяйте местами
0
0 / 0 / 0
Регистрация: 24.04.2017
Сообщений: 12
15.07.2018, 14:31  [ТС] 3
В первую очередь это попробовала, но ничего не поменялось.
Перезапустила все, сделала еще раз сейчас и сработало, теперь чувствую себя тупой .__.

Спасибо большое
0
1836 / 1152 / 353
Регистрация: 11.07.2014
Сообщений: 4,072
15.07.2018, 14:36 4
закроется или спрячется (Hide)

Добавлено через 2 минуты
Doctor_Who, без перезапуска эта ошибка, конечно, не исправится. Меняете коды, лучше перезапустить.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.07.2018, 14:36
Помогаю со студенческими работами здесь

Ошибка Assignment t o FOR-Loop variable при при присваивании переменной значения
При написании программы вылезла ошибка: ... (137): Assignment t o FOR-Loop variable 'i'. Я не могу...

Ошибка при присваивании переменной рандомного значения
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics,...

Ошибка при присвоении значения Range к переменной
Пытаюсь создать массив в котором будут размещены все непустые строки из диапазона А2:102. Sub...

Ошибка при присваивании переменной значения поля
Есть код int Tip_tovara; ADOQuery8-&gt;SQL-&gt;Add(&quot;Select Справочники_продукции.Код_продукции FROM...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru