Visual Basic – die besten Beiträge

WorksheetFunction.match liefert kein Ergebnis in Excel VBA?

Hallo zusammen. Ich habe folgendes Problem. In einer Excel-Datei (ThisWorkbook) habe ich die Tage vom 1.-letzten Tag eines Monats in Reihe 4 stehen. Ein Datum pro Spalte, beginnend in Spalte B. Darunter sollen jeweils Werte aus einer anderen Excel Datei (wbk360) eingetragen werden - mit Hilfe von VBA. In dieser zweiten Datei stehen die Tage untereinander in Spalte A. Ich benutze Worksheetfunction.Match, um die richtige Zeile in der zweiten Datei zu finden, bevor ich von dort Zahlen in meine erste Datei übertragen lasse.

Das hier ist der Teil des VBA Codes, der nicht funktioniert:

    For idatecol = 2 To 21
    On Error Resume Next
    idaterow = WorksheetFunction.Match(ThisWorkbook.ActiveSheet.Cells(4, idatecol).Value, wbk360.ActiveSheet.Range("A:A"), 0)
    
    ThisWorkbook.ActiveSheet.Cells(5, idatecol).Value = wbk360.ActiveSheet.Cells(idaterow, iOccHeader).Value
    ThisWorkbook.ActiveSheet.Cells(6, idatecol).Value = wbk360.ActiveSheet.Cells(idaterow, iIndexHeader).Value
Next idatecol

idaterow sollte mir die Zeile in Datei 2 nennen, in der das Datum steht, das ich gerade in Datei 1 bearbeiten möchte. Wenn ich aber mit F8 Zeile für Zeile durch den Code gehe, bleibt der Wert für idaterow immer 0; es wird also kein Match gefunden.

Die Daten in Datei 2 Spalte A werden als Datum in Excel erkannt. Gebe ich eine Match-Formel direkt auf meinem Worksheet in Datei 1 ein, benutze dort den Datumswert aus Zelle B4 in Datei 1 und suche nach einem Match in Spalte A in Datei 2, bekomme ich 5 als Ergebnis, weil dieses Datum in Zelle A5 in Datei 2 steht.

Offensichtlich findet Excel also das entsprechende Match für jedes einzelne Datum in Datei 1. Mit VBA finde ich aber kein einziges Match.

Hat jemand eine Idee, warum das so ist??? Vielen Dank im Voraus. Rene

Visual Basic, Microsoft Excel, VBA

Die anweisung ist in einem Namespace ungültig?

Ich habe eine Anleitung aus dem Internet für ein Zahlen generator kopiert

Dim Zahl As Integer 'zufallsgenerierte Zahl Dim Counter As Integer 'Zähler der Versuche

Private Sub btn_click_Click()

Dim Eingabe As Integer 'Eingegebene Zahl

'Zufallszahl generieren If Zahl = 0 Then Zahl = Int((Rnd() * 100) + 1) End If

'geschätzte Zahl eingeben Eingabe = tb_eingabe.Value

'Gültigkeitsprüfung If Eingabe > 100 Or Eingabe < 1 Then MsgBox ("Bitte geben Sie eine Zahl zwischen 1 und 100 ein!") tb_eingabe.Value = "" Else 'Richtige Eingabe If Eingabe = Zahl Then Cells(Counter + 2, 1) = Eingabe Cells(Counter + 2, 2) = "geschätzte Zahl richtig!"

    'Abfrage zum erneuten Spielen
    Abfrage = MsgBox("Richtig! Gebrauchte Versuche: " & Counter + 1 & vbLf & "Wollen Sie noch einmal spielen?", vbYesNo)
    If Abfrage = vbNo Then
        Application.Quit
    Else
        Columns("A:B").Select
        Selection.ClearContents
        Range("A1").Select
        ActiveCell.FormulaR1C1 = "geschätzte Zahl"
        Range("B1").Select
        ActiveCell.FormulaR1C1 = "Tipp"
        Range("A2").Select
        Zahl = 0
        Counter = 0
        tb_eingabe.Value = ""
        Exit Sub
    End If
End If

'eingegebene Zahl ist größer
If Eingabe > Zahl Then
    Cells(Counter + 2, 1) = Eingabe
    Cells(Counter + 2, 2) = "geschätzte Zahl zu groß"
    tb_eingabe.Value = ""
    Counter = Counter + 1
End If

'eingegeben Zahl ist kleiner
If Zahl > Eingabe Then
    Cells(Counter + 2, 1) = Eingabe
    Cells(Counter + 2, 2) = "geschätzte Zahl zu klein"
    Counter = Counter + 1
    tb_eingabe.Value = ""
End If

End If

End Sub

als Fehler kommen Die anweisung ist in einem Namespace ungültig wenn ich rauf klicke markiert er

Dim Zahl As Integer Dim Counter As Integer

Private Sub btn_click_Click()

(ganz oben) kann mir wer den code richtig machen?

Visual Basic, IT, programmieren

Meistgelesene Beiträge zum Thema Visual Basic