Ich habe Code-Block, wo ich eine For... Next
Schleife verwenden, um durch eine Excel-Tabelle zu gehen, und sagen Sie mir, ob in die Textfelder eingegebene Werte gefunden wurden oder nicht . Ich habe es geändert, um zu funktionieren, wenn die Werte übereinstimmen. Dennoch empfange ich die Variable Object/With Block nicht gesetzt, und das verwirrt mich. Ich habe folgendes erstellt:Initialize Correct Wert zu vermeiden Objektvariable oder Mit Blockvariable nicht gesetzt
Dim Value2Find_1 As String = txtMachNumber.Text 'Serial number value.
Dim Value2Find_2 As String = txtMachName.Text 'Machine name value.
Dim ReplaceWithValue1 As String = "" 'Replaces the serial number value if found in the sheet.
Dim ReplaceWithValue2 As String = "" 'Replaces the machine name value if found in the sheet.
Dim ReplaceWithValue3 As String = "" 'Replacement for the date-time in the Date Column.
Dim Range2Use_1 = xlWS.Range("A1:A4000") 'Range to span the A Column.
Dim Range2Use_2 = xlWS.Range("B1:B4000") 'Range to span the B Column.
Dim Range2Use_3 = xlWS.Range("F1:F4000") 'Range to span the F Column.
Dim xlCell_A = Range2Use_1.Find(txtMachNumber.Text) 'Looks up the searched serial value in A Column.
Dim xlCell_B = Range2Use_2.Find(txtMachName.Text) 'Looks up the searched machine value in B Column.
Dim LastRow = xlWS.Range("A4000").End(Excel.XlDirection.xlUp).Row + 1
Dim i As Integer
With xlWS
For i = 1 To LastRow
If Not (Value2Find_1 = txtMachNumber.Text And Value2Find_2 = txtMachName.Text) Then
MessageBox.Show("No value exists here...")
Else
Range2Use_1.Find(What:=Value2Find_1, MatchCase:=True)
Range2Use_2.Find(What:=Value2Find_2, MatchCase:=True)
MsgBox("Found both values: " & Value2Find_1 & " and " & Value2Find_2 & " on row " & xlCell_A.Row)
End If
Exit Sub
Next
End With
Wenn meine Textbox Einträge nicht in dem Blatt, die Fehler auf der folgenden Codezeile zurückgibt:
MsgBox("Found both values: " & Value2Find_1 & " and " & Value2Find_2 & " on row " & xlCell_A.Row)
Ich habe es verengt, etwas zu haben mit der Variablen zu tun, die die Zeilennummer der gefundenen Textboxeinträge zurückgibt - xlCell_A
. Hier stecke ich jedoch fest. Was muss ich einstellen, um zu vermeiden, dass die Variable Object/With Block nicht gesetzt ist? Ich fürchte, ich weiß nicht, worum es geht.
Interessanterweise las ich Ihren Rat vor dem Bearbeiten und Setup etwas, aber wurde in das Problem der "Teilzeichenfolge" zurückgegeben, wenn in einen Teil der Zelle Textwert eingefügt. Ich nehme an, dass die Verwendung der Schleife mir helfen wird, das gleiche Ergebnis zu erzielen, das ich mit Match Match Exact Cell Contents in der Excel-Funktion finden würde. Wie würdest du vorschlagen, dass ich 'xlWS' für meinen' With' Block verwende? Ich erreiche Resultate, indem ich 'xlCell A und B' überprüfe, war tatsächlich' Nothing' und die 'If' Aussage tweakend, aber es ist in genauen suchenden Begriffen instabil - ich brauche eine exakte Wertübereinstimmung oder sonst, sagen Sie, dass der Wert nicht anwesend ist . – DesignerMind
@DesignerMind Der Kommentar zu dem 'With'-Block bestand zunächst darin, dass er gelöscht werden kann, ohne dass dies Auswirkungen auf den Code hat und daher gelöscht werden sollte. Zweitens, wenn Sie 'Find' verwenden und nach' Nothing' suchen, sollte es keine Schleife geben. Drittens schlage ich nicht vor, dass Sie nur die Bedingung in der "if" -Anweisung ändern, sondern dass Sie eine Schleife mit einer gewissen Logik verwenden, um eine erfolgreiche Übereinstimmung, z. Einige Werte sind nur auf einen vernünftigen Wert für den Erfolg festgelegt, brechen die Erfolgsschleife aus und geben dann das entsprechende Ergebnis zurück. –
Ich habe einen Swing gemacht und bekomme einen 'hresult COM error', verstehe aber nicht warum. Ich verwende die folgenden 'Für i = 0 bis LastRow Wenn Range2Use_1.Cells (i, 1) .text = Value2Find_1 Dann MsgBox ("Sie haben es ...") Else MsgBox (" hier nicht. . ") Ende If Weiter" Ich denke mein Problem ist mit dem '.Cells' Teil, aber ich bin verwirrt, wie man es bekommt, um gegen meine' xlCell_A' zu suchen. Ich weiß, dass ich ein Objekt mit der '.Cells()' Methode bekomme, aber versuche. 'Value',' .Text' am Ende erzeugt weiterhin Fehler. – DesignerMind