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

Forumthread: Gesamte Tabelle markieren - ohne letzte Zeile

Gesamte Tabelle markieren - ohne letzte Zeile
13.01.2008 23:46:25
memoli
Hallo zusammen,
ich möchte gerne das als Basis für eine Pivot-Tabelle immer eine Tabelle komplett markiert wird - ohne die letzte Zeile. Hat jemand eine Idee wie man das machen kann?
Die erste Zelle der Tabelle ist H6.
Ich kann zwar die gesamte Tabelle markieren aber weiss nicht wie ich die letzte wieder abziehen soll.
Der entsprechende Teil der das macht ist dieser hier - habe ein Makro aufgezeichnet:
Range("H6").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
Die Tabelle ist leider dynamisch :-(
Hat vielleicht jemand Idee?
Grüße,
Memoli

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Gesamte Tabelle markieren - ohne letzte Zeile
14.01.2008 00:07:00
Gerd
Hallo Memoli,
etwas häufig selektiert! :-)
Range(Range("h6"), Range("h6").End(xlDown).End(xlToRight)).Offset(-1, 0).Select
Gruß Gerd

AW: Gesamte Tabelle markieren - ohne letzte Zeile
14.01.2008 01:08:13
Daniel
Hi
noch ne andere Methode, die letzte Zeile auzublenden:

With Range("H6").CurrentRegion
.Cells.Resize(.Rows.Count - 1).Select
End With


Gruß, Daniel

Anzeige
AW: Gesamte Tabelle markieren - ohne letzte Zeile
14.01.2008 00:31:00
memoli
Hallo Gerd,
vielen Dank. Genau was ich gesucht habe.
Super. Kann man eigentlich das was Du da geschrieben hast für eine Pivottabelle als Basis mitgeben?
Ich habe mal ein Makro aufgezeichnet und da sieht das irgendwie anders aus. Aus H6 wird dann irgendwie was anderes. So etwas mit RC usw.
Grüsse,
Memoli

Anzeige
AW: Gesamte Tabelle markieren - ohne letzte Zeile
14.01.2008 01:51:00
Daniel
HI
für das Erstellen der Pivot-Tabelle per Makro wird zum Festlegen des Zellbereiches der Datenquelle die Internationale Form der Z1S1-Schreibweise verwendet
z1S1: die Zelladdresse wird nicht als Kombination aus Buchstabe (Spalte ) und Zahl (Zeile) dargestellt, sondern sowohl für Zeile als auch für Spalte mit Zahlen. dabei wird durch den Kennbuchstaben deutlich gemacht , was gemeint ist:
Z für Zeile (international R für Row)
S für Spalte (international C für Column)
für Deinen Fall kannst du dir diesen Wert mit dieser Formel ermitteln:

Dim Zellbereich as string
with range("H1").currentregion
Zellbereich = "Tabelle1!" & .Resize(.Rows.Count - 1).address( true, true, xlr1c1)
end with
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= Zellbereich).CreatePivotTable...


Gruß, Daniel

Anzeige
AW: Gesamte Tabelle markieren - ohne letzte Zeile
14.01.2008 15:49:35
memoli
Hallo Daniel.
vielen Dank für die Antwort. Das hatte ich nicht gewusst.
Ich probiere das mal aus und gebe Feedback.
Grüsse,
memoli

AW: Gesamte Tabelle markieren - ohne letzte Zeile
14.01.2008 16:18:00
memoli
Hallo Daniel,
ich erhalte immer eine Fehlermeldung:
Compile error: Argument not optional
argument not optional
Es knallt genau bei --> ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=Zellbereich).CreatePivotTable
Hinten bei .CreatePivotTable
Mein Coding wo ich das einfüge (mit Makrorecorder aufgnommen) sieht so aus:
[Hinweis: Im Arbeitsblatt Tabelle1 ist die Tabelle beginnend bei H6 und in einem zweiten Arbeitsblatt mit dem Namen "Konzern" ist die Pivottabelle]

Sub Pivotdaten_aktualisieren()
' Pivotdaten_aktualisieren Makro
Application.ScreenUpdating = False
Sheets("Tabelle1").Select
'    ActiveWorkbook.Names("Druckbereich").Delete
Range("H6").Select
Selection.End(xlUp).Select
Range("I6").Select
ActiveCell.FormulaR1C1 = "Titel1"
Range("K6").Select
ActiveCell.FormulaR1C1 = "Titel2"
Range("M6").Select
ActiveCell.FormulaR1C1 = "Titel3!"
Range("H6").Select
Range(Selection, Selection.End(xlDown)).Select
Range(Selection, Selection.End(xlToRight)).Select
ActiveWorkbook.Names.Add Name:="pivotdaten", RefersToR1C1:=Selection
Sheets("Konzern").Select
Range("A3").Select
'   ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
Range("A44").Select
Application.ScreenUpdating = True
End Sub


Viele Grüsse,
Wo genau muss man das denn hinmachen?
Grüsse,
Memoli

Anzeige
AW: Gesamte Tabelle markieren - ohne letzte Zeile
14.01.2008 20:45:21
Daniel
HI
sorry, Pivot hab ich bisher immer von Hand erstellt, (weils so einfach geht), nie per Makro.
meine Empfehlung ist, einfach den Code des erstellens komplett aufzeichnen und dann in diesem Code die einzelnen Werte geziehlt ersetzen.
Hier mal ein Beispiel, wie es funktioniert ( die Datentabelle beginnt ab A1)

Sub Makro1()
Dim txt As String
txt = Range("A1").CurrentRegion.Address(True, True, xlR1C1)
txt = ActiveSheet.Name & "!" & txt
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
txt).CreatePivotTable TableDestination:="", TableName:= _
"PivotTable1", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select
ActiveSheet.PivotTables("PivotTable1").AddFields RowFields:="xxx"
ActiveSheet.PivotTables("PivotTable1").PivotFields("a").Orientation = _
xlDataField
End Sub


Gruss, Daniel

Anzeige
AW: Gesamte Tabelle markieren - ohne letzte Zeile
17.01.2008 10:58:00
Memoli
Hallo Daniel,
das ist schon echt Knifflig.
Eine Sache probiere ich noch zu der ich keine Antwort im forum finden kann.
Ich markiere den Bereich den ich brauche mit:
myrange = Range(Range("H6"), Range("H6").End(xlDown).End(xlToRight)).Offset(-1, 0).Select
Wenn ich nun den Bereich myrange meiner Pivottabelle schreiben will klappt das nicht.
Als ich dann
MsgBox (myrange)
gemacht habe steht da als value "Wahr" drin aber nicht die Range.
Da die Pivottabelle und die Quelltabelle auf unterschiedlichen Tabellenblättern liegen (und auch liegen müssen) weiss ich nicht warum da nur ein Boolean reingeschrieben wird?
Hast Du hier eine Idee?
Grüsse,
Memoli

Anzeige
AW: Gesamte Tabelle markieren - ohne letzte Zeile
17.01.2008 23:15:18
Daniel
HI
da kann ja auch nichts sinnvolles rauskommen.
.SELECT ist ne Anweisung (nämlich die Anweisung, einen bestimmten Zellbereich zu selektieren)
und eine Anweisung einer Variablen zuzuordnen ist Blödsinn.
was man machen kann, ist bestimmte Eigenschaften des RANGE-Objektes einer Variable zuzuweisen
wie zum Beispiel die Adresse mit .Address, oder die Anzahl der Zellen mit .Cells.Count oder die erste Zeile des Zellbereichs mit .Rows, oder die erste Spalte mit .columns
welchen Wert soll den myRange bekommen und als was für einen Variablentyp hast du myRange deklariert?
Gruß, Daniel

Anzeige
AW: Gesamte Tabelle markieren - ohne letzte Zeile
23.01.2008 13:48:00
Memoli
Hallo Daniel,
im Grunde hatte ich probiert mit
myrange = Range(Range("H6"), Range("H6").End(xlDown).End(xlToRight)).Offset(-1, 0).Select
die gesamte Tabelle ab Zelle H6 zu markieren aber ohne die letzte Zeile.
myrange hatte ich so definiert:
Dim myRange as Range
Gruß,
Memoli
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Gesamte Tabelle markieren - ohne letzte Zeile


Schritt-für-Schritt-Anleitung

Um in Excel die gesamte Tabelle auszuwählen, ohne die letzte Zeile zu markieren, kannst Du folgende Schritte befolgen:

  1. Öffne Excel und gehe zu dem Arbeitsblatt, das Deine Tabelle enthält. In diesem Beispiel beginnt die Tabelle in Zelle H6.

  2. Öffne den VBA-Editor mit ALT + F11.

  3. Füge ein neues Modul ein: Rechtsklick auf „VBAProject (DeinWorkbook)“ > Einfügen > Modul.

  4. Kopiere den folgenden VBA-Code in das Modul:

    Sub GesamteTabelleMarkieren()
       Range(Range("H6"), Range("H6").End(xlDown).End(xlToRight)).Offset(-1, 0).Select
    End Sub
  5. Schließe den VBA-Editor und führe das Makro aus, indem Du es in Excel startest.

Dieser Code markiert die gesamte Tabelle bis zur letzten Zeile, ohne die letzte Zeile einzuschließen.


Häufige Fehler und Lösungen

  • Fehler: "Argument not optional"

    • Dieser Fehler kann auftreten, wenn Du versuchst, einen Bereich in einer Pivot-Tabelle festzulegen. Stelle sicher, dass Du den richtigen Zellbereich angibst. Beispiel:
    Dim Zellbereich As String
    With Range("H6").CurrentRegion
        Zellbereich = "Tabelle1!" & .Resize(.Rows.Count - 1).Address(ReferenceStyle:=xlR1C1)
    End With
  • Fehler: Unzulässiger Zellbereich

    • Wenn Du einen ungültigen Zellbereich angibst, wird dieser Fehler angezeigt. Überprüfe die Startzelle und den Bereich, um sicherzustellen, dass er korrekt ist.

Alternative Methoden

Eine alternative Methode, um die gesamte Tabelle zu markieren, besteht darin, die CurrentRegion-Eigenschaft zu verwenden. Hier ein Beispiel:

With Range("H6").CurrentRegion
    .Cells.Resize(.Rows.Count - 1).Select
End With

Diese Methode ist besonders nützlich, wenn die Tabelle dynamisch ist und sich die Anzahl der Zeilen ändert.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie Du die gesamte Tabelle in verschiedenen Szenarien markieren kannst:

  1. Standardmarkierung ohne letzte Zeile:

    Range(Range("H6"), Range("H6").End(xlDown).End(xlToRight)).Offset(-1, 0).Select
  2. Verwendung in Pivot-Tabellen:

    Dim Zellbereich As String
    With Range("H6").CurrentRegion
       Zellbereich = "Tabelle1!" & .Resize(.Rows.Count - 1).Address(True, True, xlR1C1)
    End With
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=Zellbereich).CreatePivotTable ...

Tipps für Profis

  • Tastenkombination nutzen: Um schnell die gesamte Tabelle auszuwählen, kannst Du auch die Excel-Tastenkombination Strg + A verwenden, um die gesamte Tabelle auszuwählen, und dann die letzte Zeile manuell abziehen.

  • Mit Variablen arbeiten: Wenn Du oft mit bestimmten Bereichen arbeitest, definiere Variablen für diese Bereiche, um Deinen Code übersichtlicher und wartungsfreundlicher zu gestalten.


FAQ: Häufige Fragen

1. Wie kann ich die gesamte Tabelle markieren, wenn sie in einer anderen Zelle beginnt? Du musst die Startzelle in Deinen VBA-Code anpassen, z.B. Range("A1"), wenn die Tabelle dort beginnt.

2. Gibt es eine Möglichkeit, die letzte Zeile automatisch zu erkennen? Ja, Du kannst End(xlDown) verwenden, um die letzte Zeile dynamisch zu ermitteln, unabhängig von der Anzahl der Zeilen in der Tabelle.

3. Wie kann ich die gesamte Tabelle in ein anderes Blatt kopieren? Du kannst den markierten Bereich mit .Copy und dann mit .PasteSpecial in das Zielblatt einfügen. Beispiel:

Selection.Copy
Sheets("Zielblatt").Range("A1").PasteSpecial

Diese Informationen sollten Dir helfen, die gesamte Tabelle in Excel erfolgreich zu markieren, ohne die letzte Zeile einzubeziehen.

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