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

Range von ListFillrange eines Kombinationsfeldes

Range von ListFillrange eines Kombinationsfeldes
26.04.2008 22:47:00
ListFillrange
Guten Abend liebe Wissende,
ich habe für eine Anfrage in einem anderen Forum (wie sperre ich die Auswahl in einem Kombinationsfeld aus Formular) den nachstehenden Code gebastelt und laut Feedback des Anfragers scheint es auch zu funktionieren, soweit so gut.
Bei der Codeentwicklung stiess ich auf folgendes Problem, ich kann den ListFillRange eines Kombinationsfeldes auslesen und per MsgBox sehe ich dann sowas:
'Tabbele1'!$A$1:$A$6
jetzt meine Fragen:
a) Wie kann ich nun auf diesen Bereich zugreifen um z.B. die Zeilenanzahl zu ermitteln?
und das ohne Umweg, also nicht wie hier mit Split, oder sonstigemn Stringzerlegungen.
b) Wenn es für a) keine Lösung gibt, kann ich 100%ig immer davon ausgehen, daß "!" immer vorhanden ist? (mal weglassend daß jemand sein Blatt "A!!!!!" benennt *gg*)
c) kennt noch wer Pacman, oder kennt es nicht, wie auch immer, da isses:
http://www.pacman.gr/games/pacman.html
Danke ^ Gruß
Reinhard

Private Sub CommandButton1_Click()
Dim DD, Kurz
With CommandButton1
.Caption = IIf(.Caption = "Kombis sperren", "Kombis entsperren", "Kombis sperren")
For Each DD In ActiveSheet.Shapes
If DD.Name Like "Drop Down*" Then
DD.ControlFormat.Enabled = IIf(.Caption = "Kombis sperren", True, False)
Kurz = Split(DD.ControlFormat.ListFillRange, "!")
DD.ControlFormat.DropDownLines = Range(Kurz(1)).Rows.Count
'DD.ControlFormat.DropDownLines =8
End If
Next DD
End With
End Sub>/pre>

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Range von ListFillrange eines Kombinationsfeldes
26.04.2008 23:28:15
ListFillrange
Hallo Reinhard!
Ich würde davon ausgehen, dass die Dollars immer vorhanden sind.
</p><pre>Sub bb()
Dim strString As String
strString = "'Tabele1'!$A$1:$A$6"
MsgBox Range(Split(strString, "$", 2)(1)).Rows.Count
End Sub</pre><p>
Gruß Gerd

AW: Range von ListFillrange eines Kombinationsfeldes
27.04.2008 09:47:00
ListFillrange
Hi Reinhard,
Wie kann ich nun auf diesen Bereich zugreifen um z.B. die Zeilenanzahl zu ermitteln?
und das ohne Umweg, also nicht wie hier mit Split, oder sonstigemn Stringzerlegungen.


Option Explicit
Sub til()
Const S As String = "Tabelle1!$A$1:$A$6"
MsgBox Range(S).Rows.Count
End Sub


Grüße Boris

Anzeige
AW: Range von ListFillrange eines Kombinationsfeldes
27.04.2008 10:55:05
ListFillrange
Hallo,
ja, da hatte ich mich von den " ' " irritieren lassen :-)
Grüße Gerd

Code läuft nicht in "Tabelle1" aber in "Modul1"
27.04.2008 14:38:00
Reinhard
Hallo Boris, Gerd,
die Lösung von Boris hatte ich ja vorher ausprobiert, sie lief bei mir nicht. Da sie bei Boris wohl lief dachte ich dann an TakeFokusONClick des CommandButtons, aber das verursacht nicht den Fehler, True oder False ist egal.
Jetzt habe ich herausgefunden, daß der Code klappt, wenn er in Modul1 steht, steht er in "Tabelle1" klappt er nicht (Fehler 1004 bei der MsgBox).
Makro1 entspricht exakt Makro2, steht aber in "Modul1"
Wodran liegt das?
Code in "Tabelle1":

Private Sub CommandButton1_Click()
Dim DD, Kurz
Call Makro1   'funktioniert
With CommandButton1
.Caption = IIf(.Caption = "Kombis sperren", "Kombis entsperren", "Kombis sperren")
For Each DD In ActiveSheet.Shapes
If DD.Name Like "Drop Down*" Then
DD.ControlFormat.Enabled = IIf(.Caption = "Kombis sperren", True, False)
Kurz = Split(DD.ControlFormat.ListFillRange, "!")
MsgBox Range(DD.ControlFormat.ListFillRange).Rows.Count   'Fehler 1004
DD.ControlFormat.DropDownLines = Range(Kurz(1)).Rows.Count
'DD.ControlFormat.DropDownLines =8
End If
Next DD
End With
End Sub
Sub Makro2()
Dim DD
With ActiveSheet.Shapes("Drop Down 21").ControlFormat
.ListFillRange = "'Form Datas'!$A$58:$A$66"
.LinkedCell = ""
.DropDownLines = 8
End With
For Each DD In ActiveSheet.Shapes
If DD.Name Like "Drop Down*" Then
MsgBox Range(DD.ControlFormat.ListFillRange).Rows.Count    'Fehler 1004
End If
Next DD
End Sub
Code in Modul1:
Sub Makro1()
Dim DD
With ActiveSheet.Shapes("Drop Down 21").ControlFormat
.ListFillRange = "'Form Datas'!$A$58:$A$66"
.LinkedCell = ""
.DropDownLines = 8
End With
For Each DD In ActiveSheet.Shapes
If DD.Name Like "Drop Down*" Then
MsgBox Range(DD.ControlFormat.ListFillRange).Rows.Count   ' Funktioniert
End If
Next DD
End Sub

Gruß
Reinhard

Anzeige
AW: Code läuft nicht in "Tabelle1" aber in "Modul1"
27.04.2008 19:47:37
Gerd
Hi Reinhard,
wenn Du eh' über das Objekt den Wert ziehen möchtest.
MsgBox ActiveSheet.Range(DD.ControlFormat.ListFillRange).Rows.Count
MsgBox DD.ControlFormat.ListCount
P.S.: Wäre mal interessiert, KombisSperren zu sehen
Gruß Gerd

AW: Code läuft nicht in "Tabelle1" aber in "Modul1
28.04.2008 11:39:16
Reinhard
Hallo Gerd,
leider nein, auch Activesheet eingebaut bringt den Fehler 1004 bei
MsgBox ActiveSheet.Range(DD.ControlFormat.ListFillRange).Rows.Count
wenn es im Dolumentmodul von Tabelle1 steht.
Gruß
Reinhard

AW: Nicht nachvollziehbar!
28.04.2008 21:03:00
Gerd
Hallo Reinhard,
ich habe so mit 2 KombiFeldern(aus Formular) u. einem Commandbutton(aus Steuerelementetoolbox)
u. Zuweisung der Listfillrange mit "Tabelle1!....." u. je einer (Ausgabe-)Zellverknüpfung getestet.
Es funktionierte problemlos einschließlich der relevanten Zeile.

Private Sub CommandButton1_Click()
Dim DD, Kurz
'Call Makro1   'funktioniert
With CommandButton1
.Caption = IIf(.Caption = "Kombis sperren", "Kombis entsperren", "Kombis sperren")
For Each DD In Me.Shapes
If DD.Name Like "Drop Down*" Then
DD.ControlFormat.Enabled = IIf(.Caption = "Kombis sperren", True, False)
Kurz = Split(DD.ControlFormat.ListFillRange, "!")
MsgBox Me.Range(DD.ControlFormat.ListFillRange).Rows.Count   'Kein Fehler 1004
DD.ControlFormat.DropDownLines = Me.Range(Kurz(1)).Rows.Count
'DD.ControlFormat.DropDownLines =8
End If
Next DD
End With
End Sub


P.S.: Mittlerweile habe ich verstanden wie Sperrung u. Entsperren funktionieren.
Beim Testen bzw. Code ändern kann bei diesen Elementen mal etwas hängen bleiben.
Eventuell müsstest die Objekte mal neu ggf. in eine neue Tabelle einfügen ?
Gruß Gerd

Anzeige
AW: Nicht nachvollziehbar!
28.04.2008 23:16:00
Reinhard
Hallo Gerd,
hier die Datei: https://www.herber.de/bbs/user/51944.xls
ich habe deinen Code eingebaut, leider immer noch der Fehler bei der MsgBox.
Das Ganze nachzubauen in einer leeren Datei habe ich noch nicht getan, also immer nur in dieser Datei getestet, may be es liegt wirklich daran weil du ja sagst in deiner Datei klappt es.
Danke für dein Interesse und die Ideen
Gruß
Reinhard

AW: Nicht nachvollziehbar!
28.04.2008 23:26:00
Reinhard
Hallo Gerd,
du hattest Recht, in einer neuen Datei ist dieser Fehler weg.
Dafür kam prompt ein anderer weil in DD.ControlFormat.ListFillRange jetzt der Blattname fehlt.
Ich nehme an, da die Datei ungespeichert ist.
Wenn dies der Fall sein sollte, so ist das Problem gelöst, danke.
Wenn nicht melde ich mich wieder hier.
Gruß
Reinhard
Anzeige

86 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige