2017-06-12 3 views
0

ich derzeit folgendes Problem:VBA verwenden Wenn dann Auszugsdaten mit TextBox.Values ​​zum Kopieren und Einfügen

Die Quelldaten sieht derzeit wie folgt:

Value#1  Value#2 
10    AA 
11    AA 
12    AB 
13    AD 
1231   AA 
125   AB 
4312   AA 
12314   AA 

nun der Benutzer mehrere Userform hat Textboxen, wo er, wo die jeweiligen Werte definieren:

  • Textbox1 = definiert die Anfangsreihe der Werte
  • TextBox2 = Spalte für Wert # 1
  • TextBox3 = Spalte für Wert # 2
  • Textbox4 = Kriterien in Wert # 2

Jetzt habe ich folgendes erreichen wollen; der Benutzer sollte angeben, wo seine Werte # 1 sind (in TextBox2), dann sollte er die Spalte definieren, in der die Kriterien gefunden werden können (Werte # 2 in TextBox3), und danach sollte er definieren, welche Kriterien gefiltert werden sollen.

Also, wenn er wählt „AB“ in Textbox4 dann die Folgendes erscheinen in den ersten verfügbaren Spalten in dem Arbeitsblatt eingeben:

Value#1  Value#2 
12    AB 
125   AB 

Meine aktuellen Code sieht ungefähr so ​​aus, aber ich bin ständig Ändern Sie es und nichts funktioniert wirklich (Syntax-Fehler). Ich bin mir eigentlich sicher, dass der Anfang der Syntax irgendwie in Ordnung ist (?), Aber ich habe keine Ahnung, wie ich mit vba ausdrücken soll, dass sie den Wert aus der Spalte in einen anderen kopieren sollen, wenn die Kriterien übereinstimmen. Es gibt viele Beispiele hier und an anderen Orten, aber ich konnte nichts finden, wo der Bereich oder Wert nicht vordefiniert ist.

Dim c as Range 

    If OptionButton1.Value = True Then 'also this only happens if the user decides that an Optionbutton is true   
     For Each c In Sheets ("Table") Range (TextBox3.Value & TextBox1.Value + 1 & ":" & TextBox3.Value & lastrow) 
      If cell.Value = TextBox4.Value Then 
        Range (TextBox2.Value & TextBox1.Value + 1 & ":" & TextBox2.Value & lastrow) c.copy c.Offset (, 1) 'syntax-error 
      End If 
     Next 

    End If 

Ich bin ziemlich neu zu VBA und Programmierung als Ganzes und kann keine Lösung für diese finden.

Durch einige Recherchen bin ich ziemlich sicher, dass die Syntax zur Lösung dieses Problems ein bisschen wie "Für jedes" x "" usw. ist, aber ich habe nie etwas gefunden, wo der Bereich und der Wert mit einer TextBox definiert ist.

+1

"... und nichts wirklich funktioniert." - Was passiert und warum unterscheidet es sich von Ihren Erwartungen? Fügen Sie diese Informationen in Ihrem Beitrag hinzu. – Cristina

+0

vielen Dank für den Vorschlag. Ich hoffe meine Edit Info hilft. –

Antwort

0

Einige Hinweise dazu Code:

Zuerst Sie Looping mit C in der Linie For Each c In Sheets ("Table")..., aber die folgende Zeile Sie If cell.Value = TextBox4.Value prüfen, wird statt If C.Value = TextBox4.Value.

Zweitens, wenn Sie diese Zelle für TextBox4.Value in die nächste Spalte kopieren möchten, verwenden Sie C.Copy C.Offset(, 1).

Versuchen Sie den Code unten:

Dim Rng As Range 
Dim C As Range 

If OptionButton1.Value = True Then 'also this only happens if the user decides that an Optionbutton is true 

    ' set the range fisrt , See if you are getting the Error on this line --> 
    Set Rng = Sheets("Table").Range(TextBox3.Value & TextBox1.Value + 1 & ":" & TextBox3.Value & lastrow) 
    For Each C In Rng 
     ' for DEBUG ONLY 
     Debug.Print C.Value & " | TextBox4 value: " & TextBox4.Value 
     If C.Value = TextBox4.Value Then 
      MsgBox "There is a match" ' <-- for DEBUG ONLY 
      C.Copy C.Offset(, 1) ' copy the value from the cell into the next column to the right 
     End If 
    Next C 
End If 
+0

Vielen Dank für Tipps. Schätze es wirklich. Danke auch für den Code. Ich habe es versucht und es hat nichts getan. Keine Fehlermeldung und nichts, was auf dem Arbeitsblatt passiert ist. –

+0

Ich habe 2 Zeilen zum Code hinzugefügt, um Ihnen zu helfen, zu debuggen, zu sehen, welches Ergebnis Sie im unmittelbaren Fenster bekommen –

+0

Danke. Ich habe die beiden Zeilen in den Code eingefügt, aber es passiert immer noch nichts. –

Verwandte Themen