Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Aus VBA dynamische Tabelle generieren

Aus VBA dynamische Tabelle generieren
09.09.2014 14:37:25
Tobi
Hallo,
folgendes Problem:
ich möchte eine Tabelle erstellen, bei der die Anzahl von Zeilen von zwei verschiedenen Werten abhängt, die ich schon erfolgreich über eine UserForm auslese.
Die Anzahl von Spalten ist fest und soll 12 betragen.
Das was ich bisher zusammengeschrieben habe, sieht folgendermaßen aus (nicht besonders viel, ich weiß):
engctr = Worksheets("Input ").Range("C6").value + Worksheets("Input ").Range("c7").value
Set MyRange = Range("A5")
ActiveSheets.tables.Add Range:=MyRange, _
numRows:=engctr, _
numColumns:=12
engctr ist die Anzahl der Zeilen, die die Tabelle haben soll, da steht auch der richtige Wert drin.
Die Tabelle soll in der Zelle A5 beginnen
Im Nachhinein soll die Tabelle auch noch formatiert werden, aber ich denke ich bekomme das selbst hin.
Danke für eure Hilfe

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aus VBA dynamische Tabelle generieren
09.09.2014 15:56:02
fcs
Hallo Tobi,
eine Tabelle, die manuell über das Menü Einfügen--Tabelle in einem Tabellenblatt eingefügt wird heißt unter VBA ListObject.
Dein Code für das Einfügen einer solchen Tabelle müsste etwa sein:
Sub aaTest()
Dim a, engctr As Long
Dim MyRange As Range
If ActiveSheet.Name = "Input " Then
MsgBox "Im Blatt ""Input "" darf die Tabelle/Liste nicht eingefügt werden!", _
vbInformation + vbOKOnly, "Makro: aaTest"
Exit Sub
End If
engctr = Worksheets("Input ").Range("C6").Value + Worksheets("Input ").Range("c7").Value
Set MyRange = Range("A5")
ActiveSheet.ListObjects.Add xlSrcRange, Source:=MyRange.Resize(engctr, 12)
End Sub
Gruß
Franz

Anzeige
AW: Aus VBA dynamische Tabelle generieren
09.09.2014 15:59:39
Rudi
Hallo,
ein tables-Objekt gibt es nicht.
Schmeiß den Recorder an und füge eine Tabelle ein. Dann hast du die ungefähre Syntax.
Gruß
Rudi
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Dynamische Tabelle in Excel mit VBA erstellen


Schritt-für-Schritt-Anleitung

Um eine dynamische Tabelle in Excel mit VBA zu erstellen, folge diesen Schritten:

  1. Öffne den VBA-Editor: Drücke ALT + F11 in Excel, um den VBA-Editor zu öffnen.

  2. Einfügen eines neuen Moduls: Klicke im Projekt-Explorer mit der rechten Maustaste auf dein Projekt, wähle Einfügen und dann Modul.

  3. Code eingeben: Kopiere den folgenden Code in das Modul:

    Sub ErstelleDynamischeTabelle()
        Dim engctr As Long
        Dim MyRange As Range
    
        ' Berechne die Anzahl der Zeilen
        engctr = Worksheets("Input").Range("C6").Value + Worksheets("Input").Range("C7").Value
        Set MyRange = Worksheets("Input").Range("A5")
    
        ' Überprüfe, ob die Tabelle im richtigen Blatt erstellt wird
        If ActiveSheet.Name = "Input" Then
            MsgBox "Im Blatt ""Input"" darf die Tabelle/Liste nicht eingefügt werden!", vbInformation + vbOKOnly, "Fehler"
            Exit Sub
        End If
    
        ' Erstellen der dynamischen Tabelle
        ActiveSheet.ListObjects.Add Source:=MyRange.Resize(engctr, 12), _
            XlListObjectSource.xlSrcRange, , , "DynamischeTabelle"
    End Sub
  4. Makro ausführen: Schließe den VBA-Editor und führe das Makro aus, um die dynamische Tabelle zu generieren.


Häufige Fehler und Lösungen

  • Fehler: "Im Blatt 'Input' darf die Tabelle nicht eingefügt werden!"

    • Lösung: Stelle sicher, dass du das Makro in einem anderen Blatt ausführst, da der Code das Einfügen im "Input"-Blatt verhindert.
  • Fehler: "Typenübereinstimmung"

    • Lösung: Überprüfe die Werte in den Zellen C6 und C7. Stelle sicher, dass sie numerisch sind.

Alternative Methoden

Eine andere Methode, um eine dynamische Tabelle zu erstellen, ist die Verwendung von Excel-Formeln und -Funktionen. Du kannst die Funktion OFFSET in Kombination mit COUNTA verwenden, um dynamische Bereiche zu definieren. Diese Methode benötigt kein VBA und eignet sich für einfache Anforderungen.


Praktische Beispiele

Beispiel 1: Dynamische Tabelle anhand von Benutzerinput

Wenn die Benutzer einen Wert in Zelle C6 und C7 eingeben, kannst du die oben genannte Methode verwenden, um eine dynamische Tabelle zu erstellen, die sich automatisch anpasst.

Beispiel 2: Verwendung eines Excel-Makros

Du kannst ein Excel-Makro erstellen, das die Tabelle basierend auf verschiedenen Bedingungen in deinem Arbeitsblatt erstellt. Dies kann die Effizienz bei der Arbeit mit großen Datenmengen erheblich steigern.


Tipps für Profis

  • Optimierung des Codes: Verwende Application.ScreenUpdating = False, um die Bildschirmaktualisierung während der Ausführung des Makros zu deaktivieren. Dies verbessert die Leistung erheblich.

  • Fehlerbehandlung: Implementiere eine robuste Fehlerbehandlung, um unerwartete Probleme während der Ausführung deines Makros zu vermeiden.

  • Benennung der Tabellen: Achte darauf, deinen dynamischen Tabellen einen klaren und eindeutigen Namen zu geben, um Verwirrung zu vermeiden.


FAQ: Häufige Fragen

1. Wie erstelle ich eine dynamische Tabelle in Excel ohne VBA? Du kannst die Funktion OFFSET in Kombination mit COUNTA verwenden, um dynamische Bereiche zu definieren und diese in eine Tabelle zu konvertieren.

2. Was ist der Unterschied zwischen einer normalen Tabelle und einer dynamischen Tabelle in Excel? Eine normale Tabelle hat eine feste Anzahl von Zeilen und Spalten, während eine dynamische Tabelle sich automatisch an die Daten anpasst, die du eingibst oder änderst.

3. Kann ich die dynamische Tabelle nach der Erstellung formatieren? Ja, du kannst die Tabelle nach ihrer Erstellung formatieren, indem du entweder manuelle Formatierungen vornimmst oder VBA-Code hinzufügst, um die Formatierung automatisch anzuwenden.

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