Hallo Detlev,
vielen Dank für Deine fantastische Hilfe - jetzt funktioniert alles bestens :-)!!
Der Vollständigkeit halber nochmal den Code:
Call StatusUeberInventarnummerSpiderVonNach("Spider", "Rechner neu")
Private Function StatusUeberInventarnummerSpiderVonNach(quellblatt As String, zielBlatt As String)
Dim auswahl As String, zielSpalteABC As String, letzteQuellspalteABC As String, rechnerSpalteABC As String, inventarNrABC As String, _
anzahlZielzeilen As Integer, zielSpalte As Integer, anzahlQuellzeilen As Integer, statusSpalte As Integer, inventarNr As Double
'Anzahl Zeilen im Quellblatt ermitteln
Sheets(quellblatt).Select
anzahlQuellzeilen = ActiveSheet.UsedRange.Rows.Count
'Suchmatrix definieren
letzteQuellspalteABC = Split(Cells(1, ErmittleSpaltenanzahl).Address, "$")(1)
auswahl = "A1:" & letzteQuellspalteABC & anzahlQuellzeilen ' daraus wird bspw. "A1:I3753"
'Statusspalte ausfindig machen
statusSpalte = WorksheetFunction.Match("_Status", Rows(1), 0) 'Funktion sucht in Zeile 1 nach der Überschrift - bspw. "17"
rechnerSpalteABC = ErmittlespaltenID("Inventarnummer", quellblatt) 'Funktion sucht in Zeile 1 nach der Überschrift - bspw. "A"
'Anzahl Zeilen im Zielblatt
Sheets(zielBlatt).Select
anzahlZielzeilen = Range("B65535").End(xlUp).Row 'von Spalte B65535 aus nach oben in die erste beschriebene Zeile springen
'Daten rechts neben letzter befüllter Spalte einfügen
zielSpalte = ErmittleSpaltenanzahl + 1 ' Funktion liefert die letzte gefüllte Spalte als Zahl zurück
zielSpalteABC = Split(Cells(1, zielSpalte).Address, "$")(1) ' Umwandlung der Spaltenangabe in die Buchstabenbezeichnung
'erste Zeile beschriften
Cells(1, zielSpalte).Value = "Status"
'nachfolgende Zeilen befüllen
For i = 2 To anzahlZielzeilen
inventarNrABC = Cells(i, 2).Value
If inventarNrABC <> "" And IsNumeric(inventarNrABC) Then
inventarNr = inventarNrABC * 1
End If
Worksheets(zielBlatt).Cells(i, zielSpalte).Value = Application.VLookup(inventarNr, Sheets(quellblatt).Range(auswahl), statusSpalte, False)
Next i
End Function
Private Function ErmittlespaltenID(Suchwert As String, TabBlatt As String) As String
Dim ermittelteID As Integer, Buchstaben As String
Sheets(TabBlatt).Select
ermittelteID = WorksheetFunction.Match(Suchwert, Rows(1), 0) 'sucht in Zeile 1 nach der Überschrift
Buchstaben = Split(Cells(1, ermittelteID).Address, "$")(1) 'ermittelt aus der Spaltenzahl den entsprechenden Buchstaben
ErmittlespaltenID = Buchstaben
End Function
|