2016-07-27 2 views
0

Я пытаюсь закончить проект в классе VBA и застрял. Я создал программу для большей части поиска слов, но я не могу заставить функцию timerInterval работать. Задача и код ниже:Авто-очистка текста в VBA

  1. Создайте игру поиска слов, которая позволяет пользователю просматривать строку символов в течение заданного промежутка времени (например, от 5 до 10 секунд). Постройте таймер, чтобы выполнить это. По истечении времени скройте строку символов и предложите пользователю ввести одно или несколько слов, которые он увидел в строке. Например, строка символов keoixakaccessqcinmsboxeamlz содержит слова access и box. Используйте функцию InStr, чтобы определить, содержится ли угадание пользователя в строке поиска слова.

Option Compare Database 
Option Explicit 

Private Sub cmdShow_Click() 
txtOutput.Value = "hello world" 
End Sub 




Private Sub Form_Load() 
txtOutput.Caption = Text 
If txtOutput.DefaultValue = Text Then 
Me.TimerInterval = 5000 
If txtOutput = 0 Then 
txtOutput = False 


End Sub 


Private Sub cmdCheck_click() 
Dim guess As Integer 
guess = InStr(txtOutput.Value, txtInput.Value) 
If guess = 0 Then 
    txtResult.Value = "You're terrible at this game" 
Else 
    txtResult.Value = "Good find!" 
End If 

End Sub 
+0

Где 'Sub Form_Timer)' раздел кода (? Вот где произойдет очистка текста. [проверьте это] (https://msdn.microsoft.com/en-us/library/office/ff836371.aspx) –

+0

Что сказал Джимми Смит. Я прокомментирую ваш код, хотя ... Итак, txtoutput может быть строкой, int и логическим? Это просто просит неприятностей. Вам необходимо указать объявление переменной. (Окно VBA, Инструменты> Параметры). Без объявления переменных, ошибка будет работать с двумя разными переменными, такими как var1 и va1, и будет затруднять отслеживание ошибок. Вы должны использовать End Ifs даже для одиночных линий, разбитых на _ Я тоже не сделал этого, пока не получится подчеркнуть и не испортить мой код (и с трудом находить ошибку в тысячах строк). End If делает его более читаемым. – CyberClaw

+0

@CyberClaw - ваши предложения не применимы. У него уже есть опция Explicit наверху кода. txtoutput - это элемент управления, который принимает любую форму текста. Если/Endif - хорошее предложение, но не имеет ничего общего с его вопросом Таймера – dbmitch

ответ

0

Предполагая, что вы можете использовать вызов API - мне нравится этот метод лучше.

Вы можете просто переключить свой текст управление видимым/невидимым

Option Compare Database 
Option Explicit 

' Simple delay mechanism using Win32 API 
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) 

Private Sub cmdShow_Click() 
    txtOutput.Visible = true 
End Sub 


Private Sub Form_Load() 

    txtOutput.Value = "hello world" 

    Sleep 5000 ' 5000 milliseconds = 5 second delay 
    txtOutput.Visible = false 

End Sub 


Private Sub cmdCheck_click() 

    Dim guess As Integer 

    guess = InStr(txtOutput.Value, txtInput.Value) 
    If guess = 0 Then 
     txtResult.Value = "You're terrible at this game" 
    Else 
     txtResult.Value = "Good find!" 
    End If 

End Sub 
Смежные вопросы