Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
340to344
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
340to344
340to344
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

textboxes.count

textboxes.count
25.11.2003 09:19:59
Jörg Schreiber
Hallo!

Ich habe in einem Arbeitsblatt neben anderen Steuerelementen eine variable Anzahl von Textboxes, die alle einen Namen "TextboxXX" (XX als Zahl) tragen, aber durcheinander stehen. Nun moechte ich die Textboxes von oben nach unten aufsteigend von "Textbox1" bis "Textbox(Summe aller Textboxen) geordnet durchnumerieren.

Aus irgendeinem Grund funktioniert textboxes.count bei mir nicht, womit man die Sache geschickt loesen koennte. Auch hatte ich schon die Idee, alle Namen der Reihe nach in ein Array zu lesen, um ihnen dann ihrer Position im Array entsprechend einen neuen Namen zu geben. Leider durchlaeuft er anscheinend die OLEobjects nicht von oben nach unten, sondern ihrer Numerierung nach - die Reihenfolge bleibt also unveraendert.

Wie kriege ich also die Namen der Textboxes der lokalen Reihenfolge nach aufsteigend durchnumeriert (bisher: textbox23, ...48,...12 - danach soll es textbox1,...2,...3, usw. lauten)?

Besten Dank

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Gar nicht
25.11.2003 09:26:15
Michael Scheffler
AW: Gar nicht
25.11.2003 09:34:33
Jörg Schreiber
Hm, bloed!

Weisst Du vielleicht, ob es die Moeglichkeit gibt, die Adresse der Textbox in Form eines Range (row, column) z.B. der oberen linken Zelle, wo die Textbox draufliegt, zu erhalten?
AW: Gar nicht
25.11.2003 09:50:18
Michael Scheffler
Nee, sehe ich keine Möglichkeit, aber warum willst Du sie denn überhaupt so ordnen?
AW: Gar nicht
25.11.2003 10:11:01
Jörg Schreiber
eigentlich ist das problem ein ganz anderes, und ich versuche es nur so zu erschlagen:

ich habe eine textbox ueber zwei zeilen, die von groesse und lage der zellen abhaengig ist (das brauche ich auch). wenn ich nun die zeilenhoehe einer der zeilen aendere, aendert sich wie gewollt auch die hoehe der textbox - allerdings leider auch die schriftgroesse, es wird alles verzogen. das sieht halt mies aus.

drum dachte ich, die abhaengigkeit aufzuheben und die textbox per code in ihrer hoehe nachzuziehen. hier nun das problem, genau auf die textbox zuzugreifen, die es betrifft. meine vorgaenge (die ueber die zwei zeilen) sind der reihe nach durchnumeriert. faellt ein vorgang raus, aendert sich die numerierung automatisch. bei den texboxen natuerlich nicht. deshalb kann ich nie sagen, welche textbox gerade an welchem vorgang haengt.

idee1:
alle textboxen von oben nach unten neu numerieren, sobald eine zeilenhoehe angepasst wurde. klappt lt. dir nicht!

idee2:
ueber die moegliche adresse die zeile ermitteln. in dieser zeile kann ich dann die numerierung aus zelleXY auslesen und den namen der textbox angleichen. deshalb meine frage nach der adresse.

idee3:
versuchen rauszubekommen, welche textbox betroffen ist, wenn ich die zeile aendere. hab keine ahnung, wie ich da rankomme...

vielleicht ist es aber auch ganz banal per mausklick zu loesen, wo man die textverzerrungseigenart beheben kann?
Anzeige
AW: Gar nicht
25.11.2003 10:49:16
Michael Scheffler
Hi,

versuche doch mal, die Top-Eigenschaft der Textbox zu nutzen.

Gruß

Micha
AW: Gar nicht
25.11.2003 11:00:32
Jörg Schreiber
wuerde ja gehen, wenn ich wuesste, bei welcher textbox. das problem ist ja, dass ich irgendwie ermitteln muss, welche meiner textboxes die zeilenaenderung betrifft. wenn ich soweit waere, koennte ich auch mit TOP arbeiten...
Noch offen:-(
25.11.2003 11:11:18
Michael Scheffler
AW: textboxes.count
25.11.2003 11:52:58
Nayus
Hallo Jörg,
nachfolgend findest Du eine Sub, die Textboxes auf dem aktivem Blatt ihrer x-Position (Top) nach umbenennt.
Verwendet werden Arrays und ein selbst programmiertes sortieren der Arrays.
Das Ganze funktioniert natürlich mit allen OLE-Objekten. Solltest Du noch andere Objektarten (Listboxes o. ä.) auf Deinem Blatt haben, so funktioniert's nicht wie gewünscht.
Aber so sollte es ein möglicher Ansatz sein.

Gruß und viel Erfolg,
Nayus


Sub SortBoxes()
Dim l_xpos As Double, l_ulimit As Double
Dim arrXpos() As Double
Dim arrXposSorted() As Double
Dim objCnt As Integer
objCnt = ActiveSheet.OLEObjects.Count
ReDim arrXpos(objCnt)
ReDim arrXposSorted(objCnt)
l_xpos = 0
l_ulimit = 0
For i = 1 To objCnt
'Textboxes temporär umbenennen und x-Position speichern
ActiveSheet.OLEObjects(i).Name = "TB" & CStr(i)
arrXpos(i) = ActiveSheet.OLEObjects(i).Top
Next i
'Array sortieren
For x = 1 To objCnt
For j = 1 To objCnt
If x > 1 And j = 1 Then
For z = 1 To objCnt
'nächstgrößeres Element suchen
If arrXpos(z) > l_ulimit Then
l_xpos = arrXpos(z)
Exit For
End If
Next z
End If
If l_xpos = 0 Then
l_xpos = arrXpos(j)
Else
If arrXpos(j) < l_xpos And arrXpos(j) > l_ulimit Then
l_xpos = arrXpos(j)
End If
End If
Next j
arrXposSorted(x) = l_xpos
l_ulimit = l_xpos
Next x
For p = 1 To objCnt
'Textboxes nach positionieren und umbenennen
ActiveSheet.OLEObjects(p).Name = "TextBox" & CStr(p)
ActiveSheet.OLEObjects(p).Top = arrXposSorted(p)
Next p
End Sub

Anzeige
AW: textboxes.count
25.11.2003 12:02:24
Jörg Schreiber
Na das sieht doch mal nach einer Loesung aus - ich sag schon mal danke und mache mich gleich ans ausprobieren...
AW: textboxes.count
25.11.2003 16:52:09
Joerg Schreiber
Hi Nayus!

Also, fluppt fantastisch in allen moeglichen Dateien, nur nicht in der, wo ich es brauche. Ich bastel schon den ganzen Tag, aber irgendwo ist der Wurm drin. Sobald die Prozedur einmal erfolgreich durchlaufen ist, zerschiesst er mir die Objektbibliothek und bringt folgendes: "Fehler beim Komplilieren: Die Objektbiliothek ist ungueltig oder enthaelt Verweise Objektdefinitionen, die nicht gefunden werden konnten." Er hängt sich bereits bei einem Option Explicit auf...

Ist wahrscheinlich wieder unbegruendbar, was passiert. Wenn Du aber dennoch einen Tip hast...?

Wie auch immer, herzlichen Dank!
Anzeige
AW: textboxes.count
25.11.2003 17:16:01
Nayus
Hallo Joerg,
mhm, warum Dein Objektkatalog "zerschossen" wird weiß ich nicht, da ich nicht weiß,
was sonst noch so in Deine Mappe und vor allem auf dem Blatt für das das Makro aufgerufen wird enthalten ist.
Hast Du die Sub so übernommen, oder irgendwie verändert?
Hast Du noch andere Steuerelemente außer Textboxes auf dem Blatt?
Hast Du nach Ablauf der Sub irgendwelche Namen von Steuerelementen manuel geändert?
Hast Du das Blatt schreibgeschützt?
Gruß,
Nayus

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige