2016-05-11 9 views
0

Ich möchte einen VBA-Code, der Daten aus einer bestimmten Spalte von Blatt1 suchen wird und kopieren Sie diese Zeilen und fügen Sie diese auf Blatt2. Ich habe den Code geschrieben, aber dort ein Problem gefunden. Hier ist der Code unten.Excel VBA-Programmierung zum Kopieren bestimmter Zeilen von Blatt1 zu Blatt2 spezifische Zelle

Sheets("Sheet1").Select 
    Range("D1").Select 
    Dim mycode As Worksheet 
    Set mycode = ThisWorkbook.Worksheets("Sheet2") 
    Dim i As Long 
    For i = 2 To Cells(Rows.Count, "D").End(xlUp).Row 
     If Cells(i, 4).Value = "high" Then 
      Range(Cells(i, 1), Cells(i, 8)).Copy Destination:=mycode.Range("A" & mycode.Cells(Rows.Count, "A").End(xlUp).Row + 1) 
      ElseIf Cells(i, 4).Value <> "high" Then 
      Sheets("Sheet2").Select 
      Range("A2").Value = "No Crtical Logs Found" 
      End If 
     Next i 
    End Sub 

Von sheet1 Spalte D (Number4) Ich suche Datenabgleich „high“ und kopieren Sie diese Zeilen einfügen Tabelle2. Und wenn eines der "Hoch" in Spalte D nicht vorhanden ist, dann wird "Keine Aktion erforderlich" in Zelle A2 auf Blatt 2 geschrieben. Aber das Problem ist, wenn "hoher" Wert nicht dort ist, funktioniert es gut, aber wenn "hoher" Wert dort in D-Spalte sheet1 ist, dann kommt die ganze Zeit "no action required" Wert auf Zelle A2 auf Blatt2. Bitte helfen Sie mir, dies zu korrigieren.

No Crtical Logs Found 4/11/2016 Critical high  192.168.1.1 This is the sample excel sheet Action Required 

Grüße, Pinaki

Antwort

0

Sie bewegen sich weg Sheet1 zu früh:

Sub fhskdfh() 
    Sheets("Sheet1").Select 
    Range("D1").Select 
    Dim mycode As Worksheet 
    Set mycode = ThisWorkbook.Worksheets("Sheet2") 
    Dim i As Long 
    For i = 2 To Cells(Rows.Count, "D").End(xlUp).Row 
     MsgBox i & vbCrLf & Cells(i, 4).Value 
     If Cells(i, 4).Value = "high" Then 
      Range(Cells(i, 1), Cells(i, 8)).Copy Destination:=mycode.Range("A" & mycode.Cells(Rows.Count, "A").End(xlUp).Row + 1) 
     End If 
    Next i 
End Sub 
+0

Hi Gary, ich brauche die msgbox nicht, um die "hohen" "niedrigen" Werte zu zeigen, sondern ich möchte die "hohen" Werte kopieren und auf Blatt2 einfügen und über "niedrige" Werte "keine Aktion" msg wird angezeigt Blatt2 Zelle A2. Aber wenn die Zeilen mit den "hohen" Werten auf Blatt2 eingefügt werden, kommt die Meldung "Keine Aktion" auch auf Zelle A2 Blatt2 auf. –

0

Ihr Ziel der Änderung "Keine crtical Logs gefunden" Nachricht
Von

Sheets("Sheet2").Select Range("A2").Value 


Um

Sheets("Sheet2").Range("A2").Value 

Sie brauchen nicht die Zelle auszuwählen, bevor Sie einen Wert zuweisen.

+0

Hallo Glenn, Danke für deinen Kommentar. Ich habe eine Spalte (nehmen wir an, dass C) D), die den Wert als "Low" und "High" enthält und mein Code sollte wie bei den "hohen" Werten sein (Hinweis: es müssen auch "Low" -Werte in Spalte D sein aber "hohe" Werte können aus Sheet1 kommen, die gesamte (n) Spalte (n) wird kopiert und in sheet2 eingefügt. Wenn die Spalte jedoch nur "Niedrige" Werte enthält, während die Zeit "No Action" msg in Zelle A2 auf Sheet2 angezeigt wird und wenn Spalte D aus "hohen" Werten und "niedrigen" Werten besteht, kopiert sie diese "hohen" Werte und fügt sie ein auf Blatt2, aber Zelle A2 zeigt auch "Keine Aktion". –

Verwandte Themen