PDA

Vollständige Version anzeigen : Excel 2003 - Tabellenzugriff über Index


hugolee
25.08.2011, 14:17
Hallo Leute,

ich habe ein Script, das ich per Button durchlaufen lassen will.

Meine Quell-Tabellen heissen:
E_T001 bis E_T100 (Tabelle1 bis Tabelle100)

Meine Ziel-Tabellen heissen:
S_T101 bis S_T200 (Tabelle101 bis Tabelle200)


Auf diese Tabellen will ich mittels Zähler (Index) zugreifen, aber das gelingt mir nicht. Die Stellen wurden entsprechend markiert


'Arbeitsschritt 1 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Offset_Zeilen = 10
Offset_Tabellen = 100
Anzahl = [A4]

For i = 1 To Anzahl
HM_Zeile = Offset_Zeilen + i
HM_Q_Tabelle = i
HM_Z_Tabelle = Offset_Tabellen + i

Tabelle1.QueryTables(1).Refresh BackgroundQuery:=False 'Einlesen E_T001
Sheets("Übersicht").Cells(HM_Zeile, 12) = Date 'Einlesedatum eintragen





'Arbeitsschritt 2 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'Quelle - Einlesen
Q_Anfang = Sheets("Übersicht").Cells(HM_Zeile, 5) 'Spalte E
Q_Anzahl = Sheets("Übersicht").Cells(HM_Zeile, 11) 'Spalte K
Q_Ziel = Q_Anfang + Q_Anzahl - 1
'Ziel - Sichern
Z_Anfang = Sheets("Übersicht").Cells(HM_Zeile, 9) 'Spalte I
Z_Anzahl = Q_Anzahl
Z_Ziel = Z_Anfang + Z_Anzahl - 1

If Q_Anzahl < 1 Then
MsgBox "Keine Datenübernahme!"
Else
Tabelle1.Rows(Q_Anfang & ":" & Q_Ziel).Copy
Tabelle101.Rows(Z_Anfang & ":" & Z_Ziel).Insert Shift:=xlDown
Application.CutCopyMode = False
Sheets("Übersicht").Cells(HM_Zeile, 13) = Date 'Sicherungsdatum eintragen
End If

Next


'Arbeitsschritt 3 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'Meldung ausgeben
MsgBox "Aktualisierung abgeschlossen!"


Anstelle von Tabelle1 müsste sinngemäß Sheet(HM_Q_Tabelle) stehen.
und
Anstelle von Tabelle101 müsste sinngemäß Sheet(HM_Z_Tabelle) stehen.

Kann mir da jemand weiterhelfen?

Vielen DANK
hugolee

EarlFred
25.08.2011, 14:39
Hallo hugolee,

sinngemäß:
Worksheets("E_T" & Format(i, "000")). usw.
Grüße
EarlFred

NoNet
25.08.2011, 14:46
Hallo Hugo,

Tabelle1 ist der CODE-Name des Blattes aus dem VBA-Editor, diesen kann man so nicht indizieren !
Wenn die Tabellenblätter in der exakten Reihnefolge in der Datei stehen, dann sollte Dein Vorschlag (nur noch um ein 's' ergänzt) funktionieren :

Sheets(HM_Q_Tabelle).Rows(Q_Anfang & ":" & Q_Ziel).Copy

ansonsten über den Namen des Blattes :
Sheets("E_T" & format(HM_Q_Tabelle,"000")).Rows(Q_Anfang & ":" & Q_Ziel).Copy
bzw.
Sheets("S_T" & format(HM_Z_Tabelle,"000")).Rows(Z_Anfang & ":" & Z_Ziel).Insert Shift:=xlDown


Gruß, NoNet

<div style="width:550px; border-style: solid; border-width: 2px; border-color: black; background-color : #4eba04; color: black; line-height: 1.5em; font-style: Arial; font-size: 1em; padding: 10px;"><font color=yellow size=+1>Exceltreffen 28.-30.10.2011 in Chemnitz</font>

Ein Treffen für alle Excel-Freunde und Besucher deutschsprachiger Excel-Foren.
Alle Infos - Programm - Anmeldung - Teilnehmerliste etc. gibt es auf

<a href="http://www.exceltreffen.de/index.php?page=211" target=xltreffen>http://www.exceltreffen.de/index.php?page=211</a>

Wir freuen uns auf euch...
</div>

hugolee
25.08.2011, 14:52
@EarlFred
@NoNet
DANKE für Eure Hilfe.

Sheets(HM_Q_Tabelle).Rows(Q_Anfang & ":" & Q_Ziel).Copy
Das hat bei mir auch nicht funktioniert.

Habe es über den Tabellennamen und die format-Funktion gemacht.

SUPER :)