Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.06.2009, 02:03   #1
CaptainNemo
Пользователь
 
Аватар для CaptainNemo
 
Регистрация: 02.06.2009
Сообщений: 49
По умолчанию Не работает пример из Хелпа по VBA

Всем привет!
Возник каверзный вопрос, заключающийся в следующем…
Нашел классический пример из Хелпа по Visual Basic for Application. Хотел было применить его для своего приложения и сразу дался код писать, но вдруг заметил, что пример-то не работает…
В модуль формы вставил код:
Код:
Option Explicit
Private WithEvents mText As TimerState
Private Sub Command1_Click()
Text1.Text = "From Now"
    Text1.Refresh
    Text2.Text = "0"
    Text2.Refresh
Call mText.TimerTask(9.84)
End Sub
Private Sub Form_Load()
    Command1.Caption = "Click to Start Timer"
    Text1.Text = ""
    Text2.Text = ""
    Label1.Caption = "The fastest 100 meter run took this long:"
    Set mText = New TimerState
    End Sub
Private Sub mText_ChangeText()
    Text1.Text = "Until Now"
    Text2.Text = "9.84"
End Sub
Private Sub mText_UpdateTime(ByVal dblJump As Double)
    Text2.Text = Str(Format(dblJump, "0"))
    DoEvents
End Sub
Разумеется, имена всех контролов поменял, как показано в примере: форма – Form1, на форму добавил Label и кнопку с именами Label1 и Command1 соответственно. Ну и два Text1 + Text2.

В модуль класса добавил код следующего содержания:

Код:
Option Explicit
Public Event UpdateTime(ByVal dblJump As Double)
Public Event ChangeText()
Public Sub TimerTask(ByVal Duration As Double)
    Dim dblStart As Double
    Dim dblSecond As Double
    Dim dblSoFar As Double
    dblStart = Timer
    dblSoFar = dblStart 
    Do While Timer < dblStart + Duration
        If Timer - dblSoFar >= 1 Then
            dblSoFar = dblSoFar + 1
            RaiseEvent UpdateTime(Timer - dblStart)
        End If
    Loop
    RaiseEvent ChangeText
 End Sub
Однако код не работает. Не могу понять, в чём дело… Метод Refresh не работает для Text-бокса…И т.д. Как быть, подскажите, братья…
Android & Linux
CaptainNemo вне форума Ответить с цитированием
Старый 13.06.2009, 03:01   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
Нашел классический пример из Хелпа по Visual Basic for Application.
Не путайте Visual Basic for Application (VBA) и Visual Basic (VB)
Они, конечно, очень похожи, но есть некоторые нюансы, которые следует учитывать.

Во-первых, определить принадлежность кода к VB можно по именам элементов управления: Command1, Text1, Text2
Так называются по умолчанию создаваемые элементы в VB

Если бы код изначально писался под VBA, там с вероятностью 99% были бы другие имена элементов управления: CommandButton1, TextBox1, TextBox2

Теперь конкретно по коду:
1) Метод Refresh для текстбоксов в VBA отсутствует. Убираем строки (по сути, они и не были нужны)

2) При загрузке формы в VB вызывается процедура Form_Load(), а в VBA - UserForm_Initialize. Заменяем название процедуры.

3) Не забываем переименовать класс Class1 (имя по умолчанию) в TimerState

Запускаем, и проверяем:
Вложения
Тип файла: rar CaptainNemo.rar (12.1 Кб, 33 просмотров)
EducatedFool вне форума Ответить с цитированием
Старый 08.02.2013, 20:49   #3
Sdrghk
Новичок
Джуниор
 
Регистрация: 08.02.2013
Сообщений: 1
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
Запускаем, и проверяем:
Спасиб, дружище. Все работает!
Sdrghk вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TP7 чтение из файла, работает но не работает!? Qousio Помощь студентам 7 02.06.2009 09:37
Библиотека НЕ работает с 2008, но работает с 2000 SQL namenike Общие вопросы C/C++ 0 26.05.2009 11:04
Прошу хелпа SNap Помощь студентам 4 24.11.2008 19:54
Технология JNI, не работает пример :( lexluther Общие вопросы по Java, Java SE, Kotlin 0 23.11.2008 02:48
Проблема с UserForm. То работает, то НЕ работает Maxx Microsoft Office Excel 6 19.11.2008 14:51