2016-04-16 10 views
0

私は遅すぎるかもしれませんが、基本的な文字列の操作方法を理解できません。文字列操作VBA Excel

私はチェックボックスをクリックした後に値のフォームを追加するテキストボックスを取得しようとしていますが、その文字列がテキストボックス内のどこにあってもチェックボックスをオフにするとその文字列を削除します。ユーザーが繰り返し文字列を追加できないように、ラベルを追加した後にラベルをクリアします。

それで、いくつかのことを試した後、私はまだこれを理解できません。このバージョンでは、文字列defaultを ""に設定しています。私はその価値を跳ね返そうとしましたが、まだ動作していません。

任意のポインタがいいだろう私が正しく質問を理解していれば、感謝

Private Sub CheckBox1_Click() 
    Dim chxbox1cmt As String 
    Dim TxtString As String 
    Dim myString As String 
    chxbox1cmt = Label1.Caption 

    If CheckBox1.Value = True Then 
     myString = chxbox1cmt 
     TxtString = TxtString + myString 
     TextBox1.Value = TxtString 
     myString = Left(InStr(TxtString, Len(myString)), Len(myString)) 
     Label1.Caption = vbNullString 
    End If 

    If CheckBox1.Value = False Then 
     TxtString = TxtString - Left(InStr(myString, myString), myString) 
     TextBox1.Value = TxtString 
    End If 
End Sub 

答えて

3

は、あなたはモジュールレベルにTxtStringを移動する必要があります。あなたは現在、ローカル変数として宣言しているので、スコープを外した後にあなたが置いた値はただちに消えます(End Sub)。

Private TxtString As String 

Private Sub CheckBox1_Click() 
    Dim chxbox1cmt As String 
    Dim myString As String 
    chxbox1cmt = Label1.Caption 

    If CheckBox1.Value = True Then 
     myString = chxbox1cmt 
     TxtString = TxtString + myString 
     TextBox1.Value = TxtString 
     myString = Left$(InStr(TxtString, Len(myString)), Len(myString)) 
     Label1.Caption = vbNullString 
    Else 
     TxtString = TxtString - Left$(InStr(myString, myString), myString) 
     TextBox1.Value = TxtString 
    End If 
End Sub 
+0

Aaaaahhhhhh私の一部でかなり巨大な監督。 subの終わりにvariabelのクリアについて忘れてしまった。ありがとう –