2017-09-08 3 views
0

Ich bin neu in VBA excel. Ich plane, den übereinstimmenden Wert von einer Datenbank zu finden und die Daten zu einem anderen Blatt zu kopieren. Die folgenden Codes funktionieren, wurden aber nach einigen Versuchen nicht mehr ausgeführt. Ist meine Excel-Datei beschädigt? Oder Code ist falsch.Aus einem anderen Arbeitsblatt kopieren, kopieren und einfügen

Sub match() 
Dim lastrow As Long 
    lastrow = ThisWorkbook.ActiveSheet.Cells(ThisWorkbook.ActiveSheet.Rows.Count, "A").End(xlUp).Row 
Dim searchlist As Range 
    Dim rcell As Range, sValue As String 
    Dim lcol As Long, cRow As Long 
    Dim dRange As Range, sCell As Range 
    Dim d As Long 

    Set searchlist = Sheets("sheet2").Range("a5:a" & lastrow) 

    Set dRange = Sheets("Database").Range("a1:a" & lastrow) 
    For Each rcell In searchlist 
     lcol = 1 

     For Each sCell In dRange 
      If InStr(1, sCell.Value, rcell.Value) And Trim(rcell.Value) <> "" Then 


       For d = 1 To 22 
       rcell.Offset(0, lcol).Value = sCell.Offset(0, d).Value 
       lcol = lcol + 1 
      Next 
      End If 
     Next 
    Next 

End Sub 
+0

Definieren Sie Ihre letzte Zeile mit dem spezifischen Blatt, nicht ActiveSheet; Haben Database und Sheet2 dieselbe Anzahl an Zeilen? – Cyril

+1

Auf welcher Linie hört es auf? –

+0

Hallo @Cyril, beide Blatt2 und Datenbank haben unterschiedliche Anzahl von Zeilen. Ich habe die Definition von Lastrow basierend auf deinem Vorschlag geändert. es funktioniert. Danke vielmals – Tiffany

Antwort

0

Bitte ersetzen Sie diesen Code:

If InStr(1, sCell.Value, rcell.Value) And Trim(rcell.Value) <> "" Then 

zu

If InStr(1, sCell.Value, rcell.Value) > 0 And Trim(rcell.Value) <> "" Then 

Hope this Hilfe.

Verwandte Themen