Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1192to1196
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Daten auslesen und in WB einfügen - Indexfehler

Daten auslesen und in WB einfügen - Indexfehler
Michael
Hallo, liebe Profis!
Ich doktere seit Jahren mit Excel+VBA herum, um mir meine täglichen Arbeiten zu erleichtern. Nun habe ich länger nichts mehr machen müssen und stehe bei folgendem Makro vor einem Problem:
Private Sub CommandButton1_Click()
meister = "Kalkulationsnummern MASTER.xls"
wochenfile = ThisWorkbook.Name
For i = 1 To 5
Workbooks(wochenfile).Sheets(i).Select
suppeA1 = ActiveSheet.Cells(3, 2)
*gekürzt* Hier stehen alle anderen auszulesenden Artikel im Schema der Zeile über dem Text  _
_
i>
Workbooks(meister).Activate
Sheets(1).Select
Cells(65000, 1).End(xlUp).Offset(1, 0).Select
ActiveCell.Value = suppeA1
ActiveCell.Offset(0, -1).Select
ActiveCell.Value = suppeN1
ActiveCell.Offset(0, -1).Select
ActiveCell.Value = suppeP1
Cells(65000, 1).End(xlUp).Offset(1, 0).Select
ActiveCell.Value = suppeA2
ActiveCell.Offset(0, -1).Select
ActiveCell.Value = suppeN2
ActiveCell.Offset(0, -1).Select
ActiveCell.Value = suppeP2
Sheets(2).Select
Cells(65000, 1).End(xlUp).Offset(1, 0).Select
*gekürzt* In der Art geht es für etwa 30 andere Artikel über 4 Sheets weiter
Next i
End Sub

Die Daten aus dem "Wochenfile" sollen ausgelesen werden und in eine Tabelle im "Masterfile" gesammelt werden. Bis zum alphabetischen Sortieren und Check auf doppelte Files bin ich gar nicht gekommen, weil ich hier schon "außerhalb des gültigen Bereichs" bin.
Kann mir jemand einen Tipp geben, wo der Fehler liegen könnte?
Vielen Dank im Voraus und herzliche Grüße aus München
Michael
AW: Daten auslesen und in WB einfügen - Indexfehler
11.01.2011 16:53:36
Rudi
Hallo,
ActiveCell.Offset(0, -1).Select
Hier willst du ja auch von A nach links!
Mal als Anregung für einen besseren Code:
Private Sub CommandButton1_Click()
Dim Meister As String, WochenFile As String
Dim SuppeA1 As String, SuppeN1 As String, SuppeP1 As String
Dim SuppeA2 As String, SuppeN2 As String, SuppeP2 As String
Dim i As Integer
Meister = "Kalkulationsnummern MASTER.xls"
WochenFile = ThisWorkbook.Name
For i = 1 To 5
With Workbooks(WochenFile).Sheets(i)
SuppeA1 = .Cells(3, 2)
'*gekürzt* Hier stehen alle anderen auszulesenden Artikel im Schema der Zeile über dem Text
End With
With Workbooks(Meister)
With .Sheets(1).Cells(65000, 1).End(xlUp)
.Offset(1, 0) = SuppeA1
.Offset(1, 1) = SuppeN1
.Offset(1, 2) = SuppeP1
.Offset(1, 3) = SuppeA2
.Offset(1, 4) = SuppeN2
.Offset(1, 5) = SuppeP2
End With
With .Sheets(2).Cells(65000, 1).End(xlUp).Offset(1, 0)
'*gekürzt* In der Art geht es für etwa 30 andere Artikel über 4 Sheets weiter
End With
End With
Next i
End Sub

Gruß
Rudi
Anzeige
AW: Daten auslesen und in WB einfügen - Indexfehler
11.01.2011 18:43:32
Michael
OMG, bin ich hohl. Das ist ja peinlich, wie kommt das Minus da hin? Copypasta hat eben nicht nur Vorteile. Herzlichsten Dank, jetzt funktionierts!
Und die Verbesserung macht das Ganze ein wenig übersichtlicher, super!
Falls es nicht zu viele Umstände macht, könnte ich noch ein-zwei Tipps zur Sortierung bekommen, oder soll ich dafür hier ne neue Frage aufmachen? Ich habe leider keine Ahnung, wie ich das Master-File per VBA nach Einlesen der Daten noch sortieren könnte, und zwar:
Wenn Wert SuppeN1 schon im Master, dann diese SuppeN1, SuppeA1 und SuppeP1(gleiche Zeile) mit neuen Daten überschreiben
Leere Zeilen löschen
Alphabetisch sortieren(nach Spalte A)
Ich bin da grade am Basteln dran, aber irgendwie haut es zur Zeit noch nicht hin...
Danke auf jeden Fall schon mal...
Michael
Anzeige
AW: Daten auslesen und in WB einfügen - Indexfehler
11.01.2011 20:58:45
Uduuh
Hallo,
meinst du so?
    With Workbooks(Meister)
With .Sheets(1)
If Application.CountIf(.Columns(2), SuppeN1) > 0 Then
lRow = Application.Match(SuppeN1, .Columns(2), 0) - 1
Else
lRow = .Cells(Rows.Count, 1).End(xlUp).Row
End If
With .Cells(lRow, 1)
.Offset(1, 0) = SuppeA1
.Offset(1, 1) = SuppeN1
.Offset(1, 2) = SuppeP1
.Offset(1, 3) = SuppeA2
.Offset(1, 4) = SuppeN2
.Offset(1, 5) = SuppeP2
End With
.Range("A1").Sort key1:=.Range("A2"), order1:=xlAscending, header:=xlYes
End With
With .Sheets(2)
End With
Gruß aus’m Pott
Udo

Anzeige
AW: Daten auslesen und in WB einfügen - Indexfehler
11.01.2011 21:33:36
Michael
Das schaut schon mal sehr gut aus, ich kanns nur leider heute nicht mehr genau testen, ich mach mich morgen mal mit der gesamten Datenmenge dran.
Wenn mein VBA-Verständnis richtig ist, dann müsste ich für jeden N-Wert eine Else-Variable mehr zufügen, oder?
Zum Verständnis: Die Buchstaben stehen für Artikel, Nummer und Preis. Also jedes Mal, wenn eine Nummer erneut vergeben wird, hat sich was geändert, entweder Artikel oder Preis.
Also zB:
suppeA1 = Kraftbrühe mit Grießnocken
suppeN1 = 12345
suppeP1 = 1,00 €
Jetzt ändert sich der Preis für die Nocken vom Lieferanten, also ist bei der nächsten Abfrage:
suppeA1 = Kraftbrühe mit Grießnocken
suppeN1 = 12345
suppeP1 = 1,05 €
Wenn es jetzt also wie im Beispiel suppeN1 und suppeN2 gibt, wie müsste die Formel dann angepasst werden, dass Excel für jeden N-Wert das Vorhandensein checkt?
Geht das über CASE und FOR, dass ich sage:
WENN suppeN1 vorhanden
DANN alle drei Werte dieser Zeile überschreiben
UND
WENN suppeN2 vorhanden
....
usw.
Bei meinem Versuch beendet er die IF-Schleife, wenn der erste Wert vorhanden ist.
Wenn das alles zu ungenau ist, kann ich morgen gerne mal ein Dummy-Sheet reinstellen, das anonymisiert ist.
Gruß und auf jeden Fall schon mal Danke für den Schritt vorwärts!
Michael
Anzeige
Beispieldateien wären gut. owT
11.01.2011 23:08:40
Uduuh
Hallo,
Gruß aus’m Pott
Udo

AW: Beispieldateien wären gut. owT
12.01.2011 10:13:36
Michael
Also hier ist mal die Datei mit den Ausgangsdaten:
https://www.herber.de/bbs/user/73041.xls
Diese ändert sich wöchentlich.
Das hier ist die Zieldatei:
https://www.herber.de/bbs/user/73042.xls
Die Daten sollen entsprechend "rübersortiert" werden, also Vorspeise, HG1, HG2 und Aktion in "Komponenten", die anderen ihren Namen entsprechend.
Update zum Makro im ersten File:
Ich habe mich mal an einer Sortierung versucht, die nach dem Auslesen der 5 Tagessheets im MASTER stattfinden soll. Das Beste, was ich bisher geschafft habe ist, dass er garnichts macht oder den Sortierbezug für ungültig erklärt:
Das steht im Makro direkt vor Next i:

If i = 5 Then
For i2 = 1 To 4
With Workbooks(meister).Sheets(i2)
.Activate
.UsedRange.Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End With
Next i2
Else
End If

Die Sortierung habe ich aufgezeichnet, da hats funktioniert. Ich habe sogar Dummy-Artikel angelegt, falls ein Sheet noch leer ist, hilft aber nichts...
Herzlichsten Dank für die geduldige Mühe mit einem VBA-n00b...
Michael
Anzeige
AW: Daten auslesen und in WB einfügen - Indexfehler
12.01.2011 05:21:37
Michael
Das schaut schon mal sehr gut aus, ich kanns nur leider heute nicht mehr genau testen, ich mach mich morgen mal mit der gesamten Datenmenge dran.
Wenn mein VBA-Verständnis richtig ist, dann müsste ich für jeden N-Wert eine Else-Variable mehr zufügen, oder?
Zum Verständnis: Die Buchstaben stehen für Artikel, Nummer und Preis. Also jedes Mal, wenn eine Nummer erneut vergeben wird, hat sich was geändert, entweder Artikel oder Preis.
Also zB:
suppeA1 = Kraftbrühe mit Grießnocken
suppeN1 = 12345
suppeP1 = 1,00 €
Jetzt ändert sich der Preis für die Nocken vom Lieferanten, also ist bei der nächsten Abfrage:
suppeA1 = Kraftbrühe mit Grießnocken
suppeN1 = 12345
suppeP1 = 1,05 €
Wenn es jetzt also wie im Beispiel suppeN1 und suppeN2 gibt, wie müsste die Formel dann angepasst werden, dass Excel für jeden N-Wert das Vorhandensein checkt?
Geht das über CASE und FOR, dass ich sage:
WENN suppeN1 vorhanden
DANN alle drei Werte dieser Zeile überschreiben
UND
WENN suppeN2 vorhanden
....
usw.
Bei meinem Versuch beendet er die IF-Schleife, wenn der erste Wert vorhanden ist.
Wenn das alles zu ungenau ist, kann ich morgen gerne mal ein Dummy-Sheet reinstellen, das anonymisiert ist.
Gruß und auf jeden Fall schon mal Danke für den Schritt vorwärts!
Michael
Anzeige
sorry Doppelpost, bei PC-Start Seite aktual. owT
12.01.2011 05:25:13
Michael
sorry Doppelpost, bei PC-Start Seite aktual. owT

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige