2.8k Aufrufe
Gefragt in Tabellenkalkulation von beee Einsteiger_in (43 Punkte)
Hallo,

wieder ein Problem beim Markieren eines Datenbereiches via VBA:
In meinem Makro soll ein variierender Datenbereich (Datenblatt nennt sich Kopie_Import) komplett markiert werden und anschließend als Tabelle formatiert werden (Excel 2007).
Ich habe versucht, das Range $A$1:$N$309 durch UsedRange.select zu ersetzen, funktioniert leider nicht.

Sub Tabelle()

ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$1:$N$309"), , xlYes).Name = _ "Tabelle2"

Sheets("Kopie_Import").UsedRange.Select
ActiveSheet.ListObjects("Tabelle2").TableStyle = "TableStyleMedium22"


Kann mir hier jemand weiterhelfen?

Vielen Dank im Voraus!
Beee

6 Antworten

0 Punkte
Beantwortet von papa39 Mitglied (205 Punkte)
Gib deinem Bereich einen Namen. Dann kannst du diesen Bereich formatieren:

Range ("Tabelle!BenannterBereich").TableStyle = "TableStyleMedium22"
0 Punkte
Beantwortet von beee Einsteiger_in (43 Punkte)
Hallo papa39,

das mit dem Namen leuchtet ein, das habe ich bereits mit meiner obenstehenden 1. Befehlszeile gemacht. Nur leider wird da nur der Bereich $A$1:$N$309 benannt (Tabelle 2).
Ich bekommes es nicht hin, den gesamten (in seiner Zeilenanzahl variierenden) Datenbereich zu markieren.

Folgendes funzt schon mal nicht:

Sheets("Kopie_Import").UsedRange.Select
Selection.Name = "Tabelle 2" ????????

Range("Kopie_Import!Tabelle 2").TableStyle = "TableStyleMedium22"




sorry, bin VBA-Anfänger....
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all :-))

Sub makro01()
Rem letzte zeile eines sheets
Cells(1, 1) = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row
Rem letze spalte eines sheets
Cells(2, 1) = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column
Rem letzte zeile einer spalte
Cells(3, 1) = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Rem letzte spalte einer zeile
Cells(4, 1) = ActiveSheet.Rows(4).End(xlToRight).Column
End Sub


gruss nighty
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all :-)

einen bereich koennte man dann so darstellen

x1=waagerechte der linken oberen ecke
y1=senkrechte der linken oberen ecke
x2=waagerechte der rechten unteren ecke
x2=senkrechte der rechten unteren ecke

[code]Range(Cells(y1, x1), Cells(y2, x2)) = "Irgendwas"[/code]

gruss nighty
0 Punkte
Beantwortet von beee Einsteiger_in (43 Punkte)
Großes Sorry, aber leider funzt das nicht in meiner Datei (Fehlermeldung)...

Nochmal kurze Zusammenfassung:
Das Makro soll:
1) In Datenblatt "Import" alle Daten markieren
2) die Daten als Tabelle formatieren (z. B. TableStyle = "TableStyleMedium22")

Die Anzahl der Datensätze im Blatt "Import" variiert, daher kann ich den Bereich nicht pauschal abbilden.

Hilfe...
0 Punkte
Beantwortet von beee Einsteiger_in (43 Punkte)
Hab´s hinbekommen!
Unter der Annahme, dass die Spalten A bis N belegt sind:


Sub markieren_formatieren()

Range("a1:n1").Select
Range(Selection, Selection.End(xlDown)).Select


ActiveSheet.ListObjects.Add(xlSrcRange, Range(Selection, Selection.End(xlDown)), , xlYes).Name = _
"Tabelle1"


Range("Tabelle1[#All]").Select
ActiveSheet.ListObjects("Tabelle1").TableStyle = "TableStyleMedium22"

End Sub

Danke an alle Unterstützer!!!
...