Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1684to1688
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Intelligente Tabelle

Intelligente Tabelle
18.04.2019 15:40:42
Steve
Moin Leute,
ich habe da ein Problem das ich irgendwie nicht in den Griff bekomme.
Ich möchte automatisch Daten in eine intelligente Tabelle (Spalte A - D) schreiben.
Ganz zu Anfang ist die Tabelle leer. Es existieren also in Zeile 1 lediglich die Überschriften und in Zeile 2 die vorgegebenen leeren Felder.
Leider funktioniert das nicht.
With Worksheets("StartSeite")
.Cells(1, 1).End(xlDown).Offset(1).End(xlUp).Row = NName
.Cells(1, 2).End(xlDown).Offset(1).End(xlUp).Row = PersNr
.Cells(1, 3).End(xlDown).Offset(1).End(xlUp).Row = NNam
.Cells(1, 4).End(xlDown).Offset(1).End(xlUp).Row = VNam
End With
So sieht das ganze bei mir aus. Ich habe bestimmt irgendwo einen Denkfehler, aber ich finde ihn nicht.
Geht das überhaupt was ich hier vorhabe? Ich weiss wohl das ich an anderer Stelle mal eine Tabelle automatisch in eine intelligente Tabelle übertragen habe. Aber dafür habe ich immer per Makro die intelligente Tabelle gelöscht und neu wieder aufgebaut. Geht doch bestimmt einfacher, oder?
Liebe Grüße
Steve

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Intelligente Tabelle
18.04.2019 15:51:46
Daniel
Hi
deine Sprungaktion ist grundsätzlich schon mal falsch, weil sie als Ergebnis keine Zelle ergibt, sondern eine Zeilennummer (.row am ende)
wenn die Tabelle leer ist, geht ein Sprung von oben immer bis zur allerletzten Zelle der Tabelle.
in einer normalen Tabelle würde ich von unten nach oben springen, wenn unterhalb der Tabelle nichts meh steht.
.Cells(Rows.count, 1).end(xlup).Offset(1, 0) = NName
Gruß Daniel
AW: Intelligente Tabelle
18.04.2019 16:13:00
Steve
Moin Daniel,
das habe ich direkt mal ausprobiert und sieht nun so aus.
With Worksheets("StartSeite")
.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) = NName
.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0) = PersNr
.Cells(Rows.Count, 3).End(xlUp).Offset(1, 0) = NNam
.Cells(Rows.Count, 4).End(xlUp).Offset(1, 0) = VNam
End With
Aber trotzdem befindet der erste Eintrag sich in der Zeile 3. Kann es sein das VBA die erste Zeile einer intelligenten Tabelle als "beschrieben" erkennt obwohl diese tatsächlich keinen sichtbaren Inhalt hat?
Horrido
Steve
Anzeige
AW: Intelligente Tabelle
18.04.2019 16:55:18
Daniel
Hi
also ich habs mal ausprobiert, wie Excel in so einer Tabelle springt (das kannst du übrigens auch)
wenn die Tabelle leer ist, geht der Sprung in Zeile 2, obwohl diese leer ist, dann brauchst du das Offset nicht.
sind schon Daten vorhanden, dann geht der Sprung auf die letzte befüllte Zelle und dann brauchst du das Offset.
da musst du dir dann eine entpsrechende Abfrage erstellen.
in etwa so:
if .Cells(2, 1) = "" then
Zeile = 2
else
Zeile = .Cells(Rows.count, 1).end(xlup).row + 1
end if
.Cells(zeile, 1) = NName
.cells(Zeile, 2) =..

Gruß Daniel
Anzeige
AW: Intelligente Tabelle
18.04.2019 17:59:22
Luschi
Hallo Steve,
die formatierten Tabellen besitzen in Vba mehr Properties (Eigenschaften), als auf der Excel-Oberfläche.
Und dazu gehört 'DataBodyRange', der den Datenbereich als Range-Objekt wiedergibt.
Deshalb sowas: Cells(1, 1).End(xlDown).Offset(1).End(xlUp).Row = ...
total überflüssig; hier mal ein Beispiel:

Sub test1()
Dim lstObj As ListObject, rgObj As Range
Set lstObj = ActiveSheet.ListObjects("meineFormatierteTabelle")
On Error Resume Next
Set rgObj = lstObj.DataBodyRange
On Error GoTo 0
If rgObj Is Nothing Then
Debug.Print "diese formatierte Tabelle hat noch keine Daten!"
Else
Debug.Print "Datenbereich: " & rgObj.DataBodyRange.Address
End If
'.. mach irgendwas.
Set rgObj = Nothing: Set lstObj = Nothing
End Sub
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Intelligente Tabelle
24.04.2019 13:14:42
Steve
Hallo Luschi,
danke dir für deine Hilfe. Leider verstehe ich sie noch nicht so ganz.
("meineFormatierteTabelle")
Ich denke hier muss der Name meiner Tabelle rein. Hab sie mal Start genannt - also ("Start")
Das habe ich hinbekommen. Nach mehreren Versuchen ist mir aufgefallen, dass ich mich in meinem Originalmakro gar nicht auf dem richtigen Sheet befinde. Habe ich also angepasst.
Ich nehme an bei
'mach irgendwas
kann ich nun die Daten verwenden die zuvor per msgBox abgefragt wurden.
Was auch immer ich dann mache, es landet immer in der dritten spalte.
Was ich versucht habe:
1.Versuch
With Worksheets("StartSeite")
.Cells(1, 1).End(xlDown).Offset(1).End(xlUp).Row = NName
End With
2. Versuch
Range("A1").Activate 'Beginn der Einträge
ActiveCell.End(xlDown).Activate 'sucht letzte belegte Zelle
ActiveCell.Offset(1, 0).Activate 'geht in die nächst Zeile
ActiveCell = NName
ich denke ich bin da total auf dem falschen weg oder?
Also z.B. NName wird ja zuvor abgefragt. Aber wie bekomme ich diese nun in die zweite Zeile?
hast du da mal ein Tipp für mich?
Horido
Steve
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige