Ermittlung der Tabellenlänge
#1
Guten Abend zusammen,

ich würde gerne auf Betätigung einer Schaltfläche die Größe einer Dynamischen Tabelle ermitteln und dann drei spalten davon auf Inhalt überprüfen.

Leider ist Vba für mich ziemliches neuland, ich würde mich über Hilfestellungen freuen.

Vielen Dank
Top
#2
Hallo,

kennst du den Taxifahrer Witz, wenn ein Gast einsteigt und sagt:  "fahre mich bitte ganz schnell irgendwo hin" 
und auf seine Rückfrage "wohin bitte" die Antwort:  "das ist völlig egal, einfach irgendwo hin, aber schnell bitte!"

Man kann ein Makro programmieren, aber dazu brauchen wir konkrete Angaben welche Tabelle (den Namen), welche Spalten, wie viel Zeilen können es ca. sein. Ohne jede Angaben ist das nicht machbar, reines Ratspiel.

Ebenso brauchen wir konkrete Angaben welche Inhalte geprüft werden sollen, ob ganzer Text/Zahl, oder Teilstring?
Müssen in mehreren Spalten Werte geprüft werden die zusammen gehören oder verknüpft werden müssen??
Ohne konkrete Angaben wird kein Ratgeber an den Thread heran gehen. 

mfg  Gast 123
Top
#3
Hallöchen,

die Größe der Tabelle --> Adresse kannst Du so ermitteln
MsgBox ActiveSheet.ListObjects("Tabelle1").Range.Address
und den Inhalte einer Spalte --Anzahl (Anzahl2) Einträge so:
MsgBox Application.Evaluate("SUBTOTAL(3,Tabelle1[Berta])")
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#4
Hallo und danke für die Antworten,

die anzahl der Zeilen kann Variieren, die anzahl der Spalten beträgt momentan 5.

Es geht ganz grob darum das über die Excel Tabelle eine Steuerung Konfiguriert werden soll.

Es wird später bei Druck auf einen Button eine Datei erstellt in der die Einträge in einem gewissen Format gespeichert werden soll, aber das tut hier nichts zur Sache, 
das worum es mir hier geht ist das ich vor der Umwandlung überprüfen muss wie viele Einträge in der Tabelle stehen und ich muss sicher sein das in jeder Zeile bestimmte Spalten einen Inhalt haben.  

Die Tabelle heißt "Daten", und die Spalten 1, 4 und 5 dürfen nicht leer sein.

Edit:
Achso, die Spalten die nicht leer sein dürfen enthalten immer Zeichenketten.

Grüße 

Xan553
Top
#5
Sorry, aber was Du schreibst, ist "Laber-Rhabarber".
Einen genutzten Bereich erkennt Excel mittels .Cells(1).CurrentRegion
Bei Leerzeilen oder -Spalten auch mit .UsedRange

Zeige mal die Datei und konkretisiere Deine Wünsche.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top
#6
Was soll ich denn noch konkretisieren?

es ist eine Tabelle mit 5 Spalten, die anzahl der Zeilen ist variabel, kann von 10 bis 500 alles sein.
Die Spalten 1, 4 und 5 dürfen nicht leer sein, das Format der Strings muss nicht überprüft werden.

Das Script das ich bräuchte soll die Anzahl der Zeilen ausgeben (da hat mir aber schauan schon den entscheidenden Tipp gegeben) und in jeder Zeile die Spalten 1,4 und 5 auf "nicht leer" prüfen.

Edit:

Auf dem Bild sieht man die Tabelle, die Zeilen 4, 5 und 6 sind Fehlerhaft.


Angehängte Dateien Thumbnail(s)
   
Top
#7
Hallöchen,

dann dürfte mein Ansatz ja funktionieren. Musst eben nur bei Bedarf die Tabelle1 und die Berta auswechseln Smile
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#8
Ja Bestens sogar, gibt es noch eine Funktion die aus dem Ergebnis von 

MsgBox ActiveSheet.ListObjects("Tabelle1").Range.Address

die anzahl der Zeilen ausgibt oder kann ich das Ergebnis irgendwie zerlegen?
Top
#9
Hallöchen,

Wenn Deine Tabelle in Zeile 1 beginnt, reicht es, die letzte Zahl zu extrahieren. Das geht in etwa so:
'Adresse anhand $ splitten
Zeile = split(ActiveSheet.ListObjects("Tabelle1").Range.Address,"$")
'letzen Arrayeintrag (= Zeilenzahl) ausgeben
Msgbox Zeile(ubound(Zeile))
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Top
#10
Hallo,

(19.05.2016, 22:24)Xan553 schrieb: Ja Bestens sogar, gibt es noch eine Funktion die aus dem Ergebnis von 

MsgBox ActiveSheet.ListObjects("Tabelle1").Range.Address

die anzahl der Zeilen ausgibt oder kann ich das Ergebnis irgendwie zerlegen?
MsgBox ActiveSheet.ListObjects("Tabelle1").Range.Rows.Count
Gruß Uwe
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste