Hallo Forumsteilnehmer_innen,
ich komme leider mit meinen geringen und autodidaktisch angeeigneten VBA Kenntnissen nicht weiter.
Folgende Aufgabenstellung würde ich gerne umsetzen:
Mit Hilfe eines externen Programms werden Daten aus Steuergeräten ausgelesen. Diese werden dann manuell in ein leeres Worksheet kopiert. Durch einen Button wird ein Makro ausgeführt, dass aus diesem Worksheet bestimmte Daten in ein anderes Worksheet überträgt. Dort sollen Sie in die zugehörige Spalte und in die nächste freie Spalte eingefügt werden.
Folgenden VBA Code habe ich hierzu angefertigt:
Public Sub Steuergerät_Einlesen() 'Funktion zum einlesen der Daten
Dim rngQ_ECU As Range 'Quelle ECU Name
Dim rngZ_ECU As Range 'Ziel ECU Name
Dim rngQ_HWVer As Range 'Quelle HW Version
Dim rngZ_HWVer As Range 'Ziel HW Version
Dim rngQ_SWVer As Range 'Quelle SW Version
Dim rngZ_SWVer As Range 'Ziel SW Version
Set rngQ_ECU = Sheets("Tabelle1").Range("B4") 'ECU Name einlesen
Set rngZ_ECU = Sheets("Tabelle2").Cells(Sheets("Tabelle2").Rows.Count, 3).End(xlUp).Offset(1, 0)
rngZ_ECU.Resize(rngQ_ECU.Rows.Count, rngQ_ECU.Columns.Count).Value = rngQ_ECU.Value
Set rngQ_HWVer = Sheets("Tabelle1").Range("D8") 'HW Version einlesen
Set rngZ_HWVer = Sheets("Tabelle2").Cells(Sheets("Tabelle2").Rows.Count, 6).End(xlUp).Offset(1, 0)
rngZ_HWVer.Resize(rngQ_HWVer.Rows.Count, rngZ_HWVer.Columns.Count).Value = rngQ_HWVer.Value
Set rngQ_SWVer = Sheets("Tabelle1").Range("D10") 'SW Version einlesen
Set rngZ_SWVer = Sheets("Tabelle2").Cells(Sheets("Tabelle2").Rows.Count, 10).End(xlUp).Offset(1, 0)
rngZ_SWVer.Resize(rngQ_SWVer.Rows.Count, rngQ_SWVer.Columns.Count).Value = rngQ_SWVer.ValueDieser funktioniert bereits ganz gut. Jedoch gibt es das Problem welches ich ohne Hilfe nicht lösen kann. Wenn nämlich aus dem Steuergerät nicht alle Daten ausgelesen werden und ich im nächsten Schritt ein Steuergerät einlese, bei dem alle Daten vorhanden sind, dann sollten diese immer in der gleichen Zeile stehen. Im Moment ist die Routine so programmiert, dass die nächste freie Zelle mit den kopierten Daten befüllt wird.
Folgende Beispieltabellen sollen dies verdeutlichen:
Ist-Zustand:
ECU | SW | HW |
xyz | 123 | 123 |
yxz | 123 | 123 |
Soll-Zustand:
Nach meinem Verständnis müsste es eine Funktion/ Code geben, dass wenn eine neue Zeile angelegt wird, die Spalten dann auch gesperrt werden, dass sie nicht durch ein weiteres Einlesen gefüllt werden.
Vielen Dank im Voraus