Herbers Excel-Forum - das Archiv
Tabellendimensionen ermitteln
Informationen und Beispiele zu den hier genannten Dialog-Elementen:

|
Betrifft: Tabellendimensionen ermitteln
von: Jochen
Geschrieben am: 16.12.2006 22:19:51
Hi,
muss die Spaltenbreiten und Zeilenhöhen einer gesamten Tabelle in Point
ermitteln. Geht das auch ohne Schleife und vor allem, wie?
mfg Jochen
Betrifft: Wohl kaum! - Gruß owT
von: Luc:-?
Geschrieben am: 16.12.2006 23:15:24
:-?
Betrifft: AW: Tabellendimensionen ermitteln
von: EtoPHG
Geschrieben am: 16.12.2006 23:43:19
Hallo Jochen,$
Klar geht das auch ohne Schleife...
aber dafür auch mit sehr wenig Sinn...
so à la:
Gesamthöhe = Gesamthöhe + Tabelle.Zeile(1).Höhe
Gesamthöhe = Gesamthöhe + Tabelle.Zeile(2).Höhe
Gesamthöhe = Gesamthöhe + Tabelle.Zeile(3).Höhe
bis Dir oder dem Compi schlecht wird...
Gruss Hansueli
Betrifft: AW: Tabellendimensionen ermitteln
von: Jochen
Geschrieben am: 16.12.2006 23:55:15
Hi,
du bist ja noch witziger als das, was im Fersehen so als Comedy verramscht wird.
mfg Jochen
Betrifft: AW: Tabellendimensionen ermitteln
von: EtoPHG
Geschrieben am: 17.12.2006 00:01:07
Hallo Jochen,
Wenn Du mir einen
plausiblen und trifftigen Grund geben kannst, warum ich keine Schleife bei der Lösung einsetzen darf, liefere ich Dir eine Lösung OHNE Schleife. Wenn Du mir aber keinen solchen Grund angeben kannst, muss ich Dich leider hängen lassen... (ohne Witz).
Gruss Hansueli
Betrifft: AW: Tabellendimensionen ermitteln
von: Jochen
Geschrieben am: 17.12.2006 00:05:15
Hi,
die einzelnen Zeilenhöhen beim Start einer Userform zu addieren dauert einfach einen Kick zu lange(ca. 1 Sekunde), deshalb bin ich ich auf der Suche nach einer schnelleren
Lösung, so es die geben sollte.
mfg Jochen
Betrifft: AW: Tabellendimensionen ermitteln
von: EtoPHG
Geschrieben am: 17.12.2006 00:29:12
Hallo Jochen,
Keinen Dunst, wie Dein Code aussieht, aber eine Sekunde ist sehr lang und da musst Du noch wesentlich anderes falsch machen, als nur eine Schleife zu haben. Aber vielleicht kannste ja damit was anfangen (als Beispiel für den Bereich A1:IV65535) :
Sub Til()
MsgBox "Höhe:" & Range("A1:IV65535").Height & vbCrLf & _
"Breite:" & Range("A1:IV65535").Width
End Sub
Gruss Hansueli
Betrifft: AW: Tabellendimensionen ermitteln
von: Jochen
Geschrieben am: 17.12.2006 00:41:25
Hi,
das hast du wohl nicht richtig getestet? Egal welche Zeilenhöhen festgelegt werden,
liefert dein Code immer 24575,25 für die Höhe. Ich brauche aber die reale Dimension,
die allerdings eine Schleife erfordert und alle Zeilenhöhen addiert, was aber zur
bereits erwähnten Sekunde Laufzeit führt.
mfg Jochen
Betrifft: AW: Tabellendimensionen ermitteln
von: EtoPHG
Geschrieben am: 17.12.2006 01:08:25
Hallo Jochen,
Tur mir leid, aber das liegt nicht an meinem Testen.
Excel hat da irgendwie eine Macke: Ab einer bestimmten anzahl zeilen, bleibt das Höhenresultat immer gleich. Also beklag Dich bitte bei Billy Gates. Dabei könntest Du mich lobend erwähnen, weil mit diesem Workaround funktioniert:
Sub Katastrophe()
MsgBox "Höhe:" & Range("A1:IV15000").Height _
+ Range("A15001:IV30000").Height _
+ Range("A30001:IV45000").Height _
+ Range("A45001:IV60000").Height _
+ Range("A60001:IV65536").Height & vbCrLf & _
"Breite:" & Range("A1:IV65536").Width
End Sub
Gruss Hansueli
Betrifft: AW: Tabellendimensionen ermitteln
von: Klaus-Dieter
Geschrieben am: 17.12.2006 01:21:13
Hallo Hansueli,
da kommt eine größere Zahl raus, aber wieder immer die gleiche. Ich denke auch, dass man da auf irgendwelche Limits stösst. Aber wenn die Berechnung bei unserem Freund eh nur eine Sekunde dauert, frage ich mich, warum man damit seine Zeit vergeudet, noch was schnelleres zu finden.
Viele Grüße Klaus-Dieter
Online-Excel
Betrifft: AW: Warum addieren? Er schreibt doch im...
von: Luc:-?
Geschrieben am: 17.12.2006 03:19:50
...Plural - Zeile
nhöhe
n und Spalte
nbreite
n. Und warum Userform, wenn das zu lange dauert - das kann man doch samt Summenformel auch in ein Blatt ausgeben, wenn es nur zu
Ermittlungszwecken ist... Oder es fehlt hier eine Info...
Gruß Luc :-?
Betrifft: Seltsame Höhenangaben in Range
von: EtoPHG
Geschrieben am: 17.12.2006 10:54:00
Hallo Dieter,
Hab ich gestern Nacht auch noch festgestellt, aber war dann zu Müde.
Also die Sache verhält sich sehr seltsam:
Wenn die Summe der Zeilenhöhen den Wert
24'575.25 überschreitet, wird nix mehr hinzugezählt. Es ergibt sich ungefähr folgende Tabelle, bei denen dieses Limit erreicht wird:
Zeilenhöhen Anzahl Zeilen
0.5 65'536
0.75 32'768
Standard 12.75 1'929
Grösste 409.5 61
Um die korrekte Höhe zu ermitteln, müsste man also eine Schleife (Neiiiiiiinnnnn...) bauen, die sich in 1093 60er Schritten der Tabelle annimmt, da man die Zeilenhöhe vorher nicht kennt.
Gruss Hansueli
P.S. Vielleicht finde ich trotzdem noch eine Möglichkeit ohne Schleife, abwarten!
Gruss Hansueli
Betrifft: Die ULTIMATIVE Höhenermittlung
von: EtoPHG
Geschrieben am: 17.12.2006 11:25:25
Hallo zusammen,
Ohhhhhhhhhhhhhhhhnnnnee Schleiiiiiiiiiiiiffffe......
Einfacht geht's wohl nimmer:
MsgBox
Range("A65536").Top + Range("A65536").Height
Gruss Hansueli
Betrifft: AW: Die ULTIMATIVE Höhenermittlung
von: Jochen
Geschrieben am: 17.12.2006 11:38:23
Hi,
Superidee, und so gehts dann auch gleich noch in Excel 12:
Sub tiler()
Dim rc As Long
rc = Rows.Count
MsgBox Rows(rc).Top + Rows(rc).Height
End Sub
mfg Jochen
Betrifft: AW: Seltsame Höhenangaben in Range
von: Jochen
Geschrieben am: 17.12.2006 11:26:19
Hi,
ohne Schleife wäre im Hinblick auf die 1.048.576 Zeilen im Kommenden Excel 12
schon hilfreich.
mfg Jochen
Betrifft: Höhenangaben gesamte Tabelle, für was?
von: EtoPHG
Geschrieben am: 17.12.2006 11:35:52
Hallo Jochen,
Würde mich trotzdem brennend interessieren, was Du mit dieser Höhenangabe anstellst...??
Gruss Hansueli
Betrifft: AW: Höhenangaben gesamte Tabelle, für was?
von: Jochen
Geschrieben am: 17.12.2006 11:58:06
Hi,
damit soll verhindert werden, das Diagramme per Code außerhalb des sichtbaren Bereichs verschoben werden können, klappt auch.
mfg Jochen
Betrifft: AW: Tabellendimensionen ermitteln
von: Klaus-Dieter
Geschrieben am: 17.12.2006 00:29:46
Hallo Jochen,
hilft das?
Sub groesse()
Cells(1, 5) = Range("A1:C1").Width
Cells(1, 6) = Range("A1:A3").Height
End Sub
Viele Grüße Klaus-Dieter
Online-Excel
Betrifft: AW: Tabellendimensionen ermitteln
von: Daniel Eisert
Geschrieben am: 17.12.2006 22:21:32
Hallo
ja, genau so, und wenn die Anzahl der Zeilen und Spalten nicht so genau bekannt ist, dann eben so:
(Cells(1,1) ggf durch eine Zelle ersezten, die innerhalb der Tabelle liegt):
Breite = cells(1,1).currentregion.width
Höhe: = cells(1,1).currentregion.height
Bleibt nur noch die Frage, ob der von Excel zurückgegebene Wert schon Points entspricht oder noch mal umgerechnet werden muß. Deswegen mach ich die Frage nochmal auf.
Gruß, Daniel
Betrifft: Erledigt oT
von: Jochen
Geschrieben am: 17.12.2006 22:26:43
ot