2016-04-16 16 views
0

Ich könnte zu spät, aber ich kann nicht herausfinden, wie grundlegende String-Manipulation zu tun.String Manipulation VBA Excel

Ich versuche, ein Textfeld zu erhalten, um den Wert einer Beschriftung nach dem Klicken auf ein Kontrollkästchen hinzuzufügen, und entfernen Sie diese Zeichenfolge, wenn Sie das Kontrollkästchen deaktivieren, unabhängig davon, wo sich diese Zeichenfolge in der Textbox befindet. Ich lösche das Etikett nach dem Hinzufügen, damit der Benutzer die Zeichenfolge nicht wiederholt hinzufügen kann.

Also, nachdem ich ein paar verschiedene Dinge versucht habe, kann ich immer noch nicht herausfinden. Diese Version hat die Zeichenfolge standardmäßig auf "". Ich habe versucht, den Wert herumzuwerfen, aber immer noch nicht funktioniert.

Alle Zeiger wäre schön, dank

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 

Antwort

3

Wenn ich die Frage richtig zu verstehen, müssen Sie TxtString auf ein Modulebene bewegen. Sie haben es derzeit als eine lokale Variable deklariert, so dass jeder Wert, den Sie eingeben, einfach verschwindet, nachdem er den Gültigkeitsbereich verlassen hat (um 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 verdammt, das ist ein ziemlich großes Versehen meinerseits. Vergaß das Löschen von Variablen am Ende von Sub. Vielen Dank –