2016-03-30 8 views
0

Ich bin neu in VBA, derzeit arbeite ich und mein Chef brauche mich, um ein Excel-Makro zu erstellen.Excel 2013 Daten in verschiedenen Zeilen mit Makro vergleichen "Laufzeitfehler 13, Typ stimmt nicht überein"

Die Makro-Funktion sind:

  • vergleichen Daten Daten sind, mit Enddatum Startdatum.
  • automatische Erinnerung Benutzer Mitarbeiter Vertrag veraltet, wenn Arbeitsblatt geöffnet.
  • Wenn Mitarbeiter Verträge veraltet, markieren Sie Mitarbeiterdetails.

So jetzt bin ich fest, bis "Laufzeitfehler 13, Typ stimmt nicht überein".

Unten sind meine Kodierung Teil, Mismatch ist zwischen >>> < < <.

Private Sub Worksheet_Activate() 
Dim rngA As Range 
Dim rngD As Range 

With Worksheets("Sheet1") 

    For Each rngA In .Range(.Range("A1"), .Cells(.Rows.Count, "A").End(xlUp)) 
    For Each rngD In .Range(.Range("D1"), .Cells(.Rows.Count, "D").End(xlUp)) 

     >>> If rngA.Value("A1:xlUp") >= rngD.Value("D1:xlUp") Then <<< 
      MsgBox "Sheet 1 Row " & rngA.Row & " expiring" 
      rngC.Interior.ColorIndex = 3 
      rngC.Font.ColorIndex = 2 
      rngC.Font.Bold = True 

     End If 


    Next rngD 
    Next rngA 


End With 
End Sub 
+0

'Wenn rngA.Value> = rngD.Value Then' – Sam

+0

Warum Sie bedingte Formatierung nicht verwenden? Beachten Sie auch, dass Ihr Code Spalte A und Spalte D in derselben Zeile betrachtet (was sich von dem unterscheidet, was Sie in Ihrer Frage erklären). – brettdj

+0

Vielen Dank für die schnelle Antwort, aber ich verstehe nicht Ihren Vorschlag .... @@ – Han

Antwort

1

Bitte versuchen Sie diese

With Worksheets("Sheet2") 
lastrow = Range("A1048576").End(xlUp).Row 
For i = 2 To lastrow 
    If Range("A" & i).Value <> "" And Range("D" & i).Value <> "" Then 
     If Range("A" & i).Value >= Range("D" & i).Value Then 
      Range("C" & i).Value = "Contract Going to Expire" 
      Range("C" & i).Interior.Color = 3 
      Range("C" & i).Font.ColorIndex = 2 
      Range("C" & i).Font.Bold = True 
     End If 
    End If 
Next i 

End With

+0

yeap ~! es funktioniert! ... aber dude ... Ich versuche nur, in das Meldungsfeld hinzuzufügen, bisher habe ich gerade in diesem MsgBox "Sheet 1 Row" & Range ("A" & i) & hinzugefügt ablaufend " Die MsgBox funktioniert. – Han

+0

Kann ich über die Bedeutung Ihrer Kodierung wissen? >>> Bereich ("H1048576"). Ende (xlUp) .Row <<< was bedeutet es? Wie wäre es, wenn ich anfange, an H4 zu Ende anstatt an H1 zu zählen? Wie sollte ich die Codierung ändern? Ich freue mich auf Ihre Antwort. thx – Han

+0

@Han, es bedeutet, die letzte nicht leere Zeile von der Unterseite der Excel-Tabelle der spezifischen Spalte zu finden. –

Verwandte Themen