Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: mehrere Tabellen ansprechen

mehrere Tabellen ansprechen
25.05.2013 19:01:25
Tina
Hallo,
ich habe einen Code geschrieben, der nun auf drei von vier Tabellenblättern angewendet werden soll. Die Ergebnisse sollen auf dem vierten Tabellenblatt erscheinen.
Ich hätte es gerne so gemacht:
dim ws as worksheet
set ws=worksheets("Tabelle1","Tabelle2","Tabelle3")

Aber das funktioniert nicht. Wie kann ich dieses Problem lösen?
Ich wäre echt sehr dankbar für die Hilfe!

Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
was hast Du denn vor ? owT
25.05.2013 19:09:35
Matthias

AW: was hast Du denn vor ? owT
25.05.2013 19:26:43
Tina
Na, ich hab Werte in den drei Tabellenblättern die ich auswerten will (z.B. Mittelwerte etc). Die Auswertung soll in allen drei Tabellenblättern vorgenommen werden. Die Ergebnisse sollen dann aber im vierten Tabellenblatt angezeigt werden...

AW: mehrere Tabellen ansprechen
25.05.2013 23:12:56
Uwe
Hallo Tina,
wie wäre es mit etwas in der Art:
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Sheets
If Not ws.CodeName = "Tabelle4" Then
'Dein Code
End If
Next ws
Gruß
Uwe
(:o)

Anzeige
AW: mehrere Tabellen ansprechen
26.05.2013 09:00:38
Tina
Danke, ich probier das mal!

AW: mehrere Tabellen ansprechen
26.05.2013 09:46:34
Oberschlumpf
Hi Tina
Versuch es entweder, wie Uwe vorschlug, oder wenn du es in "deiner Version" versuchen willst, dann beginne so:

dim ws1 as worksheet, ws2 as worksheet, ws3 as worksheet
set ws1=worksheets("Tabelle1")
set ws2=worksheets("Tabelle2")
set ws3=worksheets("Tabelle3")

Voraussetzung hier und auch bei Uwes Idee ist, dass alle 3 Tabellenblätter + dein 4. Tabellenblatt in sich in der Datei befinden, in der du den C ode schreibst.
Wenn sich die 3 Blätter in unterschiedlichen Dateien befinden, funktioniert der Code so nicht.
Hilfts?
Ciao
Thorsten

Anzeige
AW: mehrere Tabellen ansprechen
26.05.2013 10:13:32
Tina
Ja, die Tabellenblätter sind alle in einer Datei aber Irgendwie funktioniert das immer noch nicht richtig, der Code wird nur auf das erste (Aktive) Tabellenblatt angewendet... habt ihr sonst vielleicht noch eine Idee? Danke auf jeden Fall!

AW: mehrere Tabellen ansprechen
26.05.2013 10:20:02
Oberschlumpf
Anrede fehlt...hmm...schade
Tina, wir kennen ja deinen restlichen Code nicht. Wie sollen wir helfen?
Kleiner Tipp: Bevor du jetzt deinen ganzen Code zeigst, zeig uns lieber eine Bsp-Datei inklusive Code, inklusive Beschreibung, was du erreichen möchtest.
Ciao
Thorsten

Anzeige
AW: mehrere Tabellen ansprechen
26.05.2013 10:51:37
Tina
Hey Thorsten,
erstmal Danke für die Bemühungen.
Also kleiner Auszug aus meinem Code:
Dim m As Byte, mat(60, 1) As Double
For m = 1 To 60
mat(m, 1) = (WorksheetFunction.Ln(Cells(2 + m, 5)) - WorksheetFunction.Ln(Cells(1 + m,  _
5)))
Cells(2 + m, 9) = mat(m, 1)
Next m
Dim logR As Range
Dim Ave As Double
Set logR = Range("I3:I62")
Ave = WorksheetFunction.Average(logR)

So weit so gut, ich will also den Durchschnitt aus den Daten in logR berechnen. JEtzt sollte das ganze aber nicht nur auf dem aktiven Tabellenblatt geschehen, sondern auf Blatt 1 bis 3 ... Ist das irgendwie möglich? Ich bin echt ein bisschen am verzweifeln....

Anzeige
AW: mehrere Tabellen ansprechen
26.05.2013 11:42:17
Tino
Hallo,
kannst mal diese Version testen.
Sub test()
Dim oSH, ArTabellen()
'Tabellen anpassen 
ArTabellen = Array("Tabelle1", "Tabelle2", "Tabelle3")

For Each oSH In Sheets(ArTabellen)
    With oSH
        With .Range("I3:I62")
            .FormulaR1C1 = "=LN(RC5)-LN(R[-1]C5)"
            .Value = .Value
            Ave = WorksheetFunction.Average(.Cells)
        End With
    End With
Next oSH
End Sub
Gruß Tino

Anzeige
AW: mehrere Tabellen ansprechen
26.05.2013 18:12:44
Tina
Hey Tino,
vielen Dank! Ich hab es jetzt doch anders gelöst, werde deine Version aber eventuell noch mal ausprobieren!
Gruß Tina
;
Anzeige
Anzeige

Infobox / Tutorial

Mehrere Tabellen in Excel VBA ansprechen


Schritt-für-Schritt-Anleitung

  1. Tabellenblätter definieren: Zuerst musst Du sicherstellen, dass alle vier Tabellenblätter in derselben Excel-Datei vorhanden sind. Du kannst diese Tabellenblätter mit einem Array ansprechen.

    Dim oSH As Worksheet
    Dim ArTabellen() As String
    ArTabellen = Array("Tabelle1", "Tabelle2", "Tabelle3")
  2. Schleife durch die Tabellenblätter: Verwende eine For-Each-Schleife, um durch die gewünschten Tabellenblätter zu iterieren.

    For Each oSH In Sheets(ArTabellen)
       ' Dein Code hier
    Next oSH
  3. Berechnungen durchführen: In jedem Tabellenblatt kannst Du Deine Berechnungen durchführen, z.B. Mittelwerte oder andere Auswertungen.

  4. Ergebnisse speichern: Am Ende der Schleife kannst Du die Ergebnisse im vierten Tabellenblatt speichern.


Häufige Fehler und Lösungen

  • Fehler: Code wird nur auf das aktive Tabellenblatt angewendet: Stelle sicher, dass Du in Deiner Schleife tatsächlich auf die jeweiligen Tabellenblätter zugreifst und nicht nur auf das aktive. Nutze With oSH für die Berechnungen.

  • Fehler: Tabellenblätter nicht gefunden: Überprüfe die Namen Deiner Tabellenblätter. Sie müssen exakt mit den Bezeichnungen in Excel übereinstimmen.


Alternative Methoden

Eine alternative Methode, um mehrere Tabellen anzusprechen, ist die Verwendung von Code, der direkt auf die Worksheets zugreift:

Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet
Set ws1 = Worksheets("Tabelle1")
Set ws2 = Worksheets("Tabelle2")
Set ws3 = Worksheets("Tabelle3")

Hierbei ist jedoch zu beachten, dass diese Methode weniger flexibel ist, insbesondere wenn Du viele Tabellenblätter hast.


Praktische Beispiele

Hier ist ein Beispiel, das die Berechnung des Durchschnitts in mehreren Tabellenblättern zeigt:

Sub MittelwertBerechnen()
    Dim oSH As Worksheet
    Dim Ave As Double

    For Each oSH In Sheets(Array("Tabelle1", "Tabelle2", "Tabelle3"))
        Ave = WorksheetFunction.Average(oSH.Range("I3:I62"))
        ' Ergebnisse können nun im vierten Tabellenblatt gespeichert werden
        Worksheets("Tabelle4").Cells(1, 1).Value = Ave
    Next oSH
End Sub

Dieses Skript berechnet den Durchschnitt für die Bereiche "I3:I62" in den ersten drei Tabellenblättern und speichert das Ergebnis im vierten Tabellenblatt.


Tipps für Profis

  • Verwendung von Option Explicit: Füge am Anfang Deines Codes Option Explicit hinzu, um sicherzustellen, dass alle Variablen deklariert werden. Dies hilft, Fehler zu vermeiden.

  • Fehlerbehandlung: Implementiere Error-Handler, um Probleme während der Ausführung Deines Codes zu diagnostizieren und zu beheben.

  • Benutzerdefinierte Funktionen: Erstelle Funktionen, die spezifische Berechnungen durchführen, um Deinen Code übersichtlicher zu gestalten.


FAQ: Häufige Fragen

1. Wie kann ich mehrere Tabellenblätter in Excel VBA ansprechen?
Du kannst mehrere Tabellenblätter ansprechen, indem Du sie in ein Array packst und eine For-Each-Schleife verwendest, um durch sie zu iterieren.

2. Was mache ich, wenn ich Tabellenblätter in verschiedenen Dateien habe?
Wenn sich die Tabellenblätter in verschiedenen Dateien befinden, musst Du zuerst die entsprechenden Arbeitsmappen öffnen und dann auf die Worksheets zugreifen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige