Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
856to860
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
856to860
856to860
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Schleife funkt. nur bei einem Durchlauf

Schleife funkt. nur bei einem Durchlauf
27.03.2007 11:29:03
Markus H.

Hallo zusammen,
habe mir folgendes Makro zusammengestrickt. Für einen Profi bestimmt ziemlich chaotisch, für mich ein Wunder das ich so weit überhaupt gekommen bin. Nun habe ich das Problem, daß dieses Makro nur bei einem Schleifendurchlauf funktioniert ("For i = 3 To 3"). Sobald ich "For i = 3 To 4 oder größer" setze, habe ich folgendes Problem: Ich steuere hintereinander verschiedene variable Tabellen an ('Tabelle AUS xyz, 'Tabelle IN xyz, 'Tabelle ind. yyz). Die Tabellennamen sind variabel in Tabellenblatt Kostenstellen hinterlegt. Tabellenblatt ist in beiden Dateien vorh. (abzufragende Datei und Zetraldatei). Bei Tabellen 'Tabelle AUS xyz wird die erste angesteuert in der Zentraldatei, zieht sich aber aus der zuletzt ausgewählten Datei die Werte. Für alle weiteren passiert nichts mehr.
'Tabelle IN xyz, 'Tabelle ind. yyz wird immer korrekt angesteuert. der Fehler ist dementsprechend im obersten Block, nur wo .......? Irgendwas mit dem "i" scheint nicht zu stimmen.
Die Zentraldatei ist leider zu groß zum ins Netz stellen (5,5 MB), aber vielleich weiß trotzdem jemand rat, auch wenn meine Beschreibung vermutlich ziemlich dürftig ist.
Vielen Dank und Gruß
Markus


Sub Abfrage_Vorfertigung()
Dim i As Integer
For i = 3 To 4 'Angabe, wie oft Schleife durchlaufen werden soll
Tabellenname1 = Sheets("Kostenstellen").Cells(27, i) ' abzufragende Datei ("C27")
Tabellenname2 = Sheets("Kostenstellen").Cells(21, 3) ' Zentraldate
Text1 = Sheets("Kostenstellen").Cells(32, i)
Dim j
j = 28 ' gibt die erste Zeile an für Tabellennamen (max bis 28)
Dim x
x = Sheets("Kostenstellen").Range("C31") 'Zellen IN / AUS
'Tabelle AUS
Worksheets("Kostenstellen").Visible = True  'Tabellenblatt sichtbar
Worksheets("Kostenstellen").Select          'Tabellenblatt ausgewählt
Range("B17") = ("Vorfertigung")             'schreibe in Zelle xy Text
Workbooks.Open Filename:=Cells(26, i).Value 'abzufragende Datei ("C26")
Worksheets("Kostenstellen").Visible = True  'Tabellenblatt sichtbar
Worksheets("Kostenstellen").Select          'Tabellenblatt ausgewählt
Sheets(Cells(28, i).Value).Select    'Name Tabelle AUS
Text = x 'Zellen IN / AUS
Range(Text).Select 'markieren Zellen IN / AUS
Selection.Copy 'kopieren
Worksheets("Kostenstellen").Visible = xlVeryHidden
Windows(Tabellenname2).Activate  'Zentraldatei
Worksheets("Kostenstellen").Visible = True
Sheets(Cells(j, 3).Value).Select   'Name Tabelle AUS
Range(Text).Select
ActiveSheet.Paste
Worksheets("Kostenstellen").Visible = xlVeryHidden
'Tabelle IN
Tabellenname1 = Sheets("Kostenstellen").Cells(27, i) ' abzufragende Datei ("C27")
Windows(Tabellenname1).Activate  'abzufragende Datei
Worksheets("Kostenstellen").Visible = True
Worksheets("Kostenstellen").Select
Sheets(Cells(j + 1, i).Value).Select  'Name Tabelle IN ????
Text = x 'Zellen IN / AUS
Range(Text).Select 'markieren Zellen IN / AUS
Selection.Copy 'kopieren
Worksheets("Kostenstellen").Visible = xlVeryHidden
Windows(Tabellenname2).Activate #Zentraldate
Worksheets("Kostenstellen").Visible = True
Worksheets("Kostenstellen").Select
Sheets(Cells(j + 1, i).Value).Select  'Name Tabelle AUS
Range(Text).Select
ActiveSheet.Paste
Worksheets("Kostenstellen").Visible = xlVeryHidden
'Tabelle ind.
Windows(Tabellenname1).Activate  'abzufragende Datei
Worksheets("Kostenstellen").Visible = True
Worksheets("Kostenstellen").Select
Sheets(Cells(j + 2, i).Value).Select  'Name Tabelle ind.
Range(Text1).Select 'markieren Zellen ind.
Selection.Copy 'kopieren
Worksheets("Kostenstellen").Visible = xlVeryHidden
Windows(Tabellenname2).Activate 'Zentraldatei
Worksheets("Kostenstellen").Visible = True
Worksheets("Kostenstellen").Select
Sheets(Cells(j + 2, i).Value).Select  'Name Tabelle ind.
Range(Text1).Select
ActiveSheet.Paste
Worksheets("Kostenstellen").Visible = xlVeryHidden
Application.DisplayAlerts = False
Windows(Tabellenname1).Close (False)
Next
Worksheets("Startfenster").Select
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Schleife funkt. nur bei einem Durchlauf
27.03.2007 13:03:33
Harald E
Hallo Markus,
geh den Code mal per Einzelschritt (F8) durch und schau dir die Variablen an (Mauszeiger drauf ).
Sind alle Blätter zur richtigen Mappe zugeordnet ?
Macht wenig Sinn, bzw. ist nicht möglich für die Helfer hier was nachzubauen.
Viel Glück
Harald
AW: Schleife funkt. nur bei einem Durchlauf
27.03.2007 15:46:20
Franc
sieht wirklich wüst aus ^^
die Variable j ist bei dir 28 und wird auch nicht mehr geändert (also kann man gleich die entsprechende Zahl hinschreiben)
x = der inhalt einer Zelle
und
Text = x (doppelt gemoppelt)
Außerdem hast du soviel Variable Zellbezüge, das dies doch auch sicher anders möglich sein sollte. am besten du legst einmal eine light Version von deiner Mappe (alle überflüssigen nichtrelevanten Daten löschen) und lädst die hoch
Anzeige
AW: Schleife funkt. nur bei einem Durchlauf
31.03.2007 18:07:57
doppelter
Hallöchen,
wenn Du den code schrittweise durchgehst und auch bei den select-Zeilen mal auf die Tabelle schaust und wie schon vorgeschöagen die Variableninhalte in der Überwachung ausgibst kannst Du den Fehler bestimmt weiter eingrenzen.
Ansonsten auch von mir nochmal der Hinweis die vielen Doppelungen und unnötigen Sachen rauszunehmen. Was soll das z.B.?
Worksheets("Kostenstellen").Visible = xlVeryHidden
Windows(Tabellenname2).Activate 'Zentraldatei
Worksheets("Kostenstellen").Visible = True
oder das:
Tabellenname1 = Sheets("Kostenstellen").Cells(27, i) ' abzufragende Datei ("C27")
--- Variable wird dann nicht genutzt und weiter unten nochmal belegt!
Tabellenname1 = Sheets("Kostenstellen").Cells(27, i) ' abzufragende Datei ("C27")
und ausser zum Schliessen nirgends genutzt.
Ausserdem wird zum Abfragen die Datei aus 26 genutzt:
Workbooks.Open Filename:=Cells(26, i).Value 'abzufragende Datei ("C26")
usw. usf.
Hoffe geholfen zu habenGrüße von André aus Gera - Excel-97-2003

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige