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

VBScript Fehler Dateien bereits vorhanden?

Ich schreibe gerade an einer art "DesktopCleaner"... das ganze soll erstmal nur auf meinem System funktionieren.

Option Explicit 
Dim objFSO, objFolder, objSubFld, f1, f2, colFiles, pathname, i 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objFolder = objFSO.GetFolder("D:\") 
ChkSubFld objFolder 

Private Sub ChkSubFld(StartFolder) 
ChkFiles StartFolder 
Set objSubFld = StartFolder
For Each f2 in objSubFld 
ChkSubFld f2 
Next 
End Sub 

Private Sub ChkFiles(Start) 
Set colFiles = Start.Files 
For Each f1 in colFiles 
pathname = objFSO.GetAbsolutePathName(f1)
MsgBox pathname
 If Not (pathname = "D:\4.m3u") Or (pathname = "D:\CyberGhost 6.lnk") Or (pathname = "D:\desktop.ini") Or (pathname = "D:\Electrum-LTC.lnk") Or (pathname = "D:\Electrum.lnk") Or (pathname = "D:\Lazarus.lnk") Or (pathname = "D:\Start Tor Browser.lnk") Or (pathname = "D:\TeamSpeak 3 Client.lnk") Then
objFSO.MoveFile pathname, "D:\Alles Desktop\DesktopCleaner"
End If
Next 
End Sub 

objFSO.MoveFile "E:\VBS\DesktopCleaner\data\TranscodedWallpaper", "C:\Users\Ericmc\AppData\Roaming\Microsoft\Windows\Themesr"
MsgBox "Fertig!" 

Also der Ablauf soll sein: Lösche alle Dateien auf dem Desktop (D:), ändere das Desktop Hintergrundbild. Der Fehler ist wohl beim ersten objFSO.MoveFile .... ich schaffe es aber nicht ihn zu beheben. Es kommt immer die aussage die Dateien würden bereits existieren?? Obwohl der Ordner DesktopCleaner leer ist. Danke für eure Hilfe.

Visual Basic, programmieren, VBS

Meistgelesene Beiträge zum Thema Visual Basic