Microsoft Excel

Herbers Excel/VBA-Archiv

VBA alle Zellen mit Inhalt als Tabelle formatieren

Betrifft: VBA alle Zellen mit Inhalt als Tabelle formatieren von: Sioo
Geschrieben am: 25.08.2014 10:36:27

Hallo, bastel gerade an nem Macro um einen Datenbereich als Tabelle zu formatieren. Die Daten kommen aus SAP und dort sind oft einige Zeilen, Spalten leer.

Sub A_SelectAllMakeTable()
    Dim tbl As ListObject
    Dim rng As Range

    Set rng = Range(Range("A1"), Range("A1").SpecialCells(xlLastCell))
    Set tbl = ActiveSheet.ListObjects.Add(xlSrcRange, rng, , xlYes)
    tbl.TableStyle = "TableStyleMedium15"
End Sub
Wenn ich dies benutze, formatiert er den ganzen Bereich als Macro wo Daten auftauchen, aber inkl leere Spalten und Zeilen. Wie kann ich diese entfernen?

Vielen Dank im Voraus.

  

Betrifft: AW: VBA alle Zellen mit Inhalt als Tabelle formatieren von: Rudi Maintaire
Geschrieben am: 25.08.2014 11:06:19

Hallo,
Wie kann ich diese entfernen?
indem du sie einfach löschst.

Der Recorder ist dein Freund.

Aktionen aufzeichnen und anschließend den Code überarbeiten.

Gruß
Rudi


  

Betrifft: AW: VBA alle Zellen mit Inhalt als Tabelle formatieren von: Sioo
Geschrieben am: 25.08.2014 11:20:50

Hallo Rudi,


Mit dem Makro Rekorder ist die Lösung leider unzureichend, da er Select benutzt und spezielle Zeilen und Spalten markiert. Problem ist: Es sind immer unterschiedliche Spalten bzw Zeilen leer. Da bringt mir Select A7 beispielsweise nicht viel. Ich brauch ein Makro welches in einer Range diese Zeilen und Spalten löscht. Wenn ich google finde ich sowas für Zeilen:

Public Sub DeleteBlankRows()

Dim R As Long
Dim c As Range
Dim n As Long
Dim rng As Range

On Error GoTo skip
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual

If Selection.Rows.Count > 1 Then
Set rng = Selection
Else
Set rng = ActiveSheet.UsedRange.Rows
End If
n = 0
For R = rng.Rows.Count To 1 Step -1
If Application.WorksheetFunction.CountA(rng.Rows(R).EntireRow) = 0 Then
rng.Rows(R).EntireRow.Delete
n = n + 1
End If
Next R

skip:
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

first = Selection.Column
last = Selection.Columns(Selection.Columns.Count).Column

   For I = last To first Step -1

   If WorksheetFunction.CountBlank(ActiveSheet.Columns(I)) = 1048576 Then
   Columns(I).Delete
   End If

 Next I


End Sub

Wie könnte ich da ggf Spalten einfügen. Viele grüße


  

Betrifft: AW: VBA alle Zellen mit Inhalt als Tabelle formatieren von: Adis
Geschrieben am: 25.08.2014 14:15:23

Hallo

ich liebe kleine Beispiel Dateien. Hier eine Excel7 Version, die aber nach wie vor laeuft.
Amüsant ist, das dieses Programm nicht normal ablaeuft, sondern -den Laufzeifehler- auswertet.
Sucht man mit SpecialCells nach xlContents.Count erfolgt die Fehlermeldung -keine Zellen vorhanden-
Ein Zeichen das die betreffende Zeile/ Spalte leer sein muss. Damit wird sie -rückwaerts- gelöscht.
Rückwerts löschen, weil sonst der Zeilenzaehler durch die gerade gelöschte Zeile durcheinander kommt.
Wenn das Makro gefaellt in die eigene Datei übernehmen. Würde mich freuen wenn es passt.

https://www.herber.de/bbs/user/92279.xls

Gruss Adis


  

Betrifft: AW: VBA alle Zellen mit Inhalt als Tabelle formatieren von: Sioo
Geschrieben am: 25.08.2014 20:22:09

Hallo Adis,

kann die Datei leider nicht benutzen. Weder auf der Arbeit noch zuhause funktioniert das Makro, da ich ein ActiveX Steuerelement benötige.


  

Betrifft: AW: VBA alle Zellen mit Inhalt als Tabelle formatieren von: Adis
Geschrieben am: 26.08.2014 21:26:41

Hallo

Hier der Programmm Code. Einfach in ein normales Modul kopieren und ausprobieren.
Am besten zuerst in einer eigenen kleinen Beispiel Datei oder einer Kopie der Original Datei.
Würde mich freuen wenn es klappt. (Meine Beispiel Datei war versehentlich falsch formatiert)
Die letzte Zeile und Spalte bitte manuell aendern. Zur Zeit 10.000 Zeilen, 100 Spalten

'Leere Zeilen und Spalten in Datenbanken -rückwaerts- löschen 25.5.2014
'ein -umgekehrtes Programm-, weils den Laufzeit Fehler auswertet!!
'Anfrage: Sioo Betreff: VBA alle Zellen mit Inhalt als Tabelle formatieren

Const LastRow = 10000 '65535 Zeilen
Const LastCol = 100 '256 Spalten

'Rückwaertschleife Programm mit SpecialCells(Contents)
'gelöscht wird in dem Fall über Fehler: -keine Zellen- mit Werten gefunden

Sub LeereZeilen_undSpalten_löschen()
'  Sheets("Tabelle1").Select
  Application.ScreenUpdating = False
On Error GoTo ClrRow
'Rückwaertschleife SpecialCells(Contents)
For i = LastRow To 1 Step -1
   Rows(i).Select    '** nur zum Test
   wert = Rows(i).SpecialCells(xlContents).Count
Next i

On Error GoTo ClrCol
For i = LastCol To 1 Step -1
   Columns(i).Select   '** nur zum Test
   wert = Columns(i).SpecialCells(xlContents).Count
Next i
Exit Sub

'gelöscht wird bei Laufzeitfehler:  -keine Zellen gefunden-
ClrRow:  'kein Wert gefunden ; löschen
   Rows(i).Delete Shift:=xlUp
   Resume Next

ClrCol:  'kein Wert gefunden ; löschen
   Columns(i).Delete Shift:=xlToLeft
   Resume Next
End Sub
Gruss Adis


 

Beiträge aus den Excel-Beispielen zum Thema "VBA alle Zellen mit Inhalt als Tabelle formatieren"