2016-07-27 13 views
0

VBAクラスでプロジェクトを終了しようとしていますが、止まっています。私は単語検索のほとんどのためのプログラムを作成しましたが、私はtimerInterval関数を働かせることができません。チャレンジとコードは次のとおりです。VBAのテキスト入力の自動クリア

  1. ユーザーが所定の時間(たとえば5〜10秒)文字列を表示できるようにする単語検索ゲームを作成します。タイマーを作成してこれを達成します。時間が経過した後、文字列を非表示にして、文字列に表示された1つ以上の単語を入力するようにユーザーに促します。たとえば、文字列keoixakaccessqcinmsboxeamlzには、accessおよびboxという単語が含まれています。 InStr関数を使用して、ユーザーの推測が単語​​検索文字列に含まれているかどうかを判断します。私はより良い、この方法が好き - あなたはAPI呼び出しを使用することができると仮定すると、

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

どこコードの 'サブForm_Timer()'セクションのですか?それで、テキスト消去マジックが起こります。 [これをチェックしてください](https://msdn.microsoft.com/en-us/library/office/ff836371.aspx) –

+0

ジミースミスが言ったこと。 私はあなたのコードにコメントするつもりです。だから、txtoutputは文字列、int、ブール値のどれですか?それはただのトラブルを求めているだけです。 変数の宣言が必要です。 (VBAウィンドウ、ツール>オプション)。変数の宣言がなければ、ミスタイプはvar1やva1のような2つの異なる変数を扱うことになり、追跡が困難なエラーが発生します。 1行分の分割でもEnd Ifを使用する必要があります_ アンダースコアを紛失してコードが乱雑になり(何千もの行でエラーが見つからない)まで、私はどちらもしませんでした。 End Ifを使用すると、読みやすくなります。 – CyberClaw

+0

@Cyber​​Claw - あなたの提案は適用されません。彼はすでにコードの上にOption Explicitを持っています。 txtoutputは、任意の形式のテキストを取るコントロールです。もし/ Endifが素晴らしい提案だが、Timerの質問とは何も関係がない。 – dbmitch

答えて

0

あなただけ見えない目に見えるまで、あなたのテキストコントロールを/切り替えることができます

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 
関連する問題