Отображение значения переменной на форме

Программирование на Visual Basic for Applications
Brudda
Обычный пользователь
Обычный пользователь
 
Сообщения: 79
Зарегистрирован: 21.02.2005 (Пн) 14:47
Откуда: Рига

Отображение значения переменной на форме

Сообщение Brudda » 26.07.2007 (Чт) 11:03

Добрый день.
Помогите решить проблемку, пожалуйста.
Есть пользовательская форма (Form1), на форме есть лейбл (Label1).
Вот кусочек кода.
Код: Выделить всё
Row = 1
Do While cells(Row, 1).value <> ""
  ...
  Form1.Label1.Caption = Row
  Row = Row + 1
Loop


В этом варианте значение отображаемое в лейбле (Label1) не изменяется, хотя, как мне кажется, должно меняться при каждом прохождении цикла. Я никак не могу найти ошибку. Может подскажете чего путного? Спасибо.
С почтением,
Brudda

gjghjc
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 659
Зарегистрирован: 13.10.2002 (Вс) 8:28
Откуда: БАЛАКЛАВА!!

Сообщение gjghjc » 26.07.2007 (Чт) 13:18

попробуй так
Код: Выделить всё
......
Doevents
Form1.Label1.Caption = Row
........

И еще момент, а Row разве не зарезервированное слово?
Утро добрым не бывает!

Brudda
Обычный пользователь
Обычный пользователь
 
Сообщения: 79
Зарегистрирован: 21.02.2005 (Пн) 14:47
Откуда: Рига

Сообщение Brudda » 26.07.2007 (Чт) 13:39

gjghjc, спасибо - заработало.
Row как название переменной использую регулярно, косяков замечено не было.
С почтением,
brudda

gjghjc
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 659
Зарегистрирован: 13.10.2002 (Вс) 8:28
Откуда: БАЛАКЛАВА!!

Сообщение gjghjc » 26.07.2007 (Чт) 17:17

И тем не менее вот что по этому поводу говорит Хэлп по VBA

Row Property
See Also Applies To Example Specifics
Returns the number of the first row of the first area in the range. Read-only Long.

Example
This example sets the row height of every other row on Sheet1 to 4 points.

For Each rw In Worksheets("Sheet1").Rows
If rw.Row Mod 2 = 0 Then
rw.RowHeight = 4
End If
Next rw
Утро добрым не бывает!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.07.2007 (Пт) 11:34

И что с того? Я сейчас если класс напишу, где будет property get по имени gjghjc, это слово станет зарезервированным в VBA? :roll:
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

gjghjc
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 659
Зарегистрирован: 13.10.2002 (Вс) 8:28
Откуда: БАЛАКЛАВА!!

Сообщение gjghjc » 27.07.2007 (Пт) 13:43

2GSerg
Можно по полочкам?
Ну не работал я с классами.
В чем я заблуждаюсь?
Утро добрым не бывает!

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 27.07.2007 (Пт) 17:13

gjghjc писал(а):2GSerg
Можно по полочкам?
Ну не работал я с классами.
В чем я заблуждаюсь?


Речь о том, что факт существования проперти не имеет никакого отношения к резервированию этого слова в VBA :-)
Привет,
KL

gjghjc
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 659
Зарегистрирован: 13.10.2002 (Вс) 8:28
Откуда: БАЛАКЛАВА!!

Сообщение gjghjc » 27.07.2007 (Пт) 17:40

Ну ладно, я балбес, признаю :) Не правильно выразил свою мысль. :)
Но не будет ли корректней использовать имена переменных не пересекающиеся с именами пропертей, резервированных слов и т.д.
Не возникнет ли путаницы при чтении проекта другими людьми.
Может правильней было бы назвать переменную lngRow??
Хотя может автору так удобней....
Утро добрым не бывает!

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 27.07.2007 (Пт) 18:05

gjghjc писал(а):Ну ладно, я балбес, признаю :) Не правильно выразил свою мысль. :)
Но не будет ли корректней использовать имена переменных не пересекающиеся с именами пропертей, резервированных слов и т.д.
Не возникнет ли путаницы при чтении проекта другими людьми.
Может правильней было бы назвать переменную lngRow??
Хотя может автору так удобней....


Думаю, и это лично мое мнение, что в именовании переменных не существует понятий "правильно" и "неправильно" - это дело в первую очередь вкуса, привычки и тому, как тебя учили это делать.

У человека мало-мальски знакомого с объектной системой Excel, путаницы при чтении такого проекта возникать не должно. Ведь разница между...

Row
Range("A1").Row
ActiveSheet.Rows

...видна невооруженным глазом.

Другое дело если ты попытаешся присвоить имя переменной "Date" (ведь есть такая функция и тип), но тут уже Excel выдаст тебе ошибку при компиляции.

А вообще конструкции типа:

For each Row in Activesheet.Rows

For each Cell in Activesheet.Rows(1).Cells

For each Sheet in ActiveWorkbook.Sheets

используются сплошь и рядом.
Привет,
KL


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 109

    TopList