2016-06-30 21 views
0

Insbesondere was ich tun möchte, ist eine Möglichkeit zu finden, zu überprüfen, ob eine bestimmte Eingabe in Sheet1 Zelle, auch in Blatt2 gefunden wird.VBA - wie die Automatisierung der Überprüfung der Eingänge (Neuling hier) gehen

nicht kenntnisreich mit VBA so habe ich versucht, die Aufnahme Makro

Sheets("Sheet2").Select 
    Cells.Find(What:="asd", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _ 
    xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ 
    , SearchFormat:=False).Activate 

Jetzt statt String "asd", ich den Eingang in sheet1 wollen, unter

Sheets("Sheet1").Select 
Range("B1").Select 

Ich habe versucht, zu ändern "asd" zu Eingang in sheet1,

Sheets("Sheet2").Select 
    Cells.Find(What:= 
     Sheets("Sheet1").Select 
     Range("B1").Select, After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _ 
    xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _ 
    , SearchFormat:=False).Activate 

aber es mir einen Fehler ist zu geben. Jeder kann bitte helfen, wie das geht oder einen anderen Ansatz empfehlen, um mein Problem zu lösen.

+0

was:. = Arbeitsblatt ("Tabelle1") Bereich ("b1") Wert nach. = Arbeitsblatt ("Tabelle1"). Bereich ("b1") –

Antwort

0

Versuchen Sie folgendes:

Cells.Find(What:=ThisWorkbook.Sheets("Sheet1").Range("B1").Value, _ 
     LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True, SearchFormat:=False).Select 

EDIT: Wie ich Ihnen in dem Kommentar sagte

Dim MyCell as Range 
Set MyCell = ThisWorkbook.Sheets("Sheet2").Cells.Find(What:=ThisWorkbook.Sheets("Sheet1").Range("B1").Value, _ 
      LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True, SearchFormat:=False) 

'This will check if it is found or not 
If MyCell Is Nothing Then 
    MsgBox "Did not find it" 
Else 
    MsgBox "Found it" 
End If 
+0

Danke. Mein nächster Satz wäre Nach dem Makro sollte es einen Code in Sheets ausgeben ("Sheet1"). Range ("B2"). sage output 1, wenn value gefunden wird sonst 0 .. Unten ist der Code, muss addiert werden und wenn sonst Anweisung vielleicht für die Ausgabe? ______________________________________ Sheets ("Sheet2"). Wählen Cells.Find (Was: = Sheets ("Sheet1 ") .Range (" B1 "). Wert, nach: = ActiveCell, LookIn: = xlFormulas, _ LookAt: = xlPart, Suchreihenfolge: = xlByRows, SearchDirection: = xlNext, _ MatchCase: = False, SearchFormat: = False) .Activate End Sub –

+0

Sie sollten eine Variable als Range deklarieren und dann gleich wie Sie finden. Ich werde meine Antwort bearbeiten, um Ihnen ein Beispiel für den Code zu zeigen. –

+0

Kann ich das if else statt o Meldungsfeld in Wert in einer Zelle sagen: Wenn MyCell ist nichts Dann Sheets ("Sheet1"). Bereich ("B3"). Wählen ActiveCell.FormulaR1C1 = "1" Else Blätter ("Sheet1"). Bereich ("B3"). Wählen ActiveCell.FormulaR1C1 = "0" Ende If –

0

Wenn Sie Strings in verschiedenen Blättern vergleichen wollen, nur eine neue Schaltfläche Brache erstellen und hinzufügen Code:

If Sheets("sheet1").Range("b1") = Sheets("sheet2").Range("b1") then 
    msgbox " string match" 
Else 
    msgbox " string don't match" 
End If 

Dieser Code wird Zelle B1 f vergleichen ROM sheet1 zu Zelle B1 von sheet2

+0

Das zweite Blatt ist unstrukturiert, daher kann das Blatt2.range nicht referenziert werden. –

+0

Was meinst du mit Blatt ist unstrukturiert? –

+0

kein spezifisches Format, da die Daten von Blatt2 aus der PDF-Datei stammen, die ich gerade kopiert und eingefügt habe. Die Pd-Datei hat auch kein Standardformat, daher musste ich die Suchfunktion verwenden, um zu prüfen, ob der spezifische Wert von Blatt 1 in Blatt 2 zu finden ist –

0

über die Funktion INSTR

Dim pos As Integer 

pos = InStr(Sheets("sheet2").Range("b1"), Sheets("sheet1").Range("b1")) 

If pos<> 0 then 
    msgbox " string match" 
Else 
    msgbox " string don't match" 
End If