Discussion:
Formular/Kontrollkästchen
(zu alt für eine Antwort)
Helmut Gütschow
2006-10-20 15:27:00 UTC
Permalink
Hallo,

ich habe in einer Tabelle eine Spalte (A) über Formular je ein
Kontrollkästchen eingefügt und diese jeweils über 'Zellverknüpfung'
eine Zelle zugewiesen, z.B.

A1 = Kontrollkästchen B1 = Zellverknüpfung
A2 = "" B2 = ""

Jedes Kontrollkästchen habe ich dann das gleiche Makro zugewiesen.

Mein Frage: Kann ich in diesen Makro prüfen, welche 'Zellverknüpfung'
dazu gehört bzw. in diesen Fall in welcher Zeile das Kästchen geklickt
wurde?
--
/ /
/-/ MfG
/ /elmut
Wolfgang Habernoll
2006-10-20 17:02:38 UTC
Permalink
Hallo Helmut
Post by Helmut Gütschow
Hallo,
ich habe in einer Tabelle eine Spalte (A) über Formular je ein
Kontrollkästchen eingefügt und diese jeweils über 'Zellverknüpfung'
eine Zelle zugewiesen, z.B.
A1 = Kontrollkästchen B1 = Zellverknüpfung
A2 = "" B2 = ""
Jedes Kontrollkästchen habe ich dann das gleiche Makro zugewiesen.
Mein Frage: Kann ich in diesen Makro prüfen, welche 'Zellverknüpfung'
dazu gehört bzw. in diesen Fall in welcher Zeile das Kästchen geklickt
wurde?
versuch es mal mit "Application.Caller" etwa so

Sub Makro1()
If TypeName(Application.Caller) = "String" Then
MsgBox "Aufruf von " & Application.Caller
Else
''MsgBox ("Weiter Optionen nicht ausgewertet ")
End If
End Sub

mfG
Wolfgang Habernoll
Helmut Gütschow
2006-10-21 06:21:00 UTC
Permalink
Am 20.10.06 haute wolfgang.habernoll auf die Tasten

Hallo Wolfgang!
Post by Wolfgang Habernoll
versuch es mal mit "Application.Caller" etwa so
Danke, damit kann ich schon etwas anfangen.

Wie erwähnt brauche ich beim Klick auf ein Kontrollkästchen nur die
Zeilennummer in dem ich dieses Kästchen gesetzt habe und die Info ob
aktiviert oder deaktiviert wurde.

So habe ich das zum Zeilennummer suchen angepasst:

Dim i As Integer
i = CInt(Mid$(Application.Caller, InStr(Application.Caller, " ") + 1))

Und das scheint zu funktioniert, oder gibt es evtl. Einwände?

PS. Problem sind aber die Kontrollkästchen, die werden ja fortlaufend
bezeichnet, jetzt gibt mir Excel z.B. 'Kontrollkästchen 13' vor,
obwohl ich erst 'Kontrollkästchen 10' (wegen Zeile 10) brauche. Keine
Ahnung wo 10,11,12 abgeblieben sind. Kann man die irgendwie zurück
setzen?
Auch die starre Verknüpfung gefällt mir nicht so ganz, wenn ich z.B.
irgend wann oben mal einen Zeile einfüge, bricht das ganze zusammen.

Deswegen noch meine Frage, gibt es evtl. eine andere Möglichkeit (z.B.
mit einen Steuerelement/Checkbox) einfacher festzustellen in welcher
Zeile dieses gesetzt ist?

Ich weiss mit einen Kreuz etc. in einer Spalte setzen, wäre das alles
einfacher, aber ich hätte doch gerne eine Checkbox.
--
/ /
/-/ MfG
/ /elmut
Eike Bimczok
2006-10-21 09:18:50 UTC
Permalink
Post by Helmut Gütschow
Deswegen noch meine Frage, gibt es evtl. eine andere Möglichkeit (z.B.
mit einen Steuerelement/Checkbox) einfacher festzustellen in welcher
Zeile dieses gesetzt ist?
Hallo Helmut,

das geht wie folgt:

Sub getRowOfShapes()
'shows the row number of the shapes
'10-2006 E.Bimczok
'www.profi-excel.de

Dim myShape As Object
Dim zeile As Long
For Each myShape In ActiveSheet.Shapes
zeile = myShape.TopLeftCell.Row
'shapeAdr = myShape.TopLeftCell.Address(0, 0)
'shapeName = myShape.Name
Stop
Next myShape

End Sub




Details zum Quellcode unter
http://www.profi-excel.de/vba_makros/zeilennummer-von-objekten-bestimmen.htm


Gruß
Eike
Helmut Gütschow
2006-10-21 16:10:00 UTC
Permalink
Am 21.10.06 haute info auf die Tasten

Hallo Eike!
Post by Eike Bimczok
Sub getRowOfShapes()
'shows the row number of the shapes
'10-2006 E.Bimczok
'www.profi-excel.de
Ich bin begeistert, danke. Soweit funktioniert das _fast_ so wie ich
wollte, es gibt aber ein Problem:

Ich möchte nur die Zeilennummer von dem Objekt haben auf dem ich gerade
geklickt habe. Ich habe deine Routine z.B. in das Click-Ereignis vom
Steuerelement 'Checkbox' gelegt. Wenn ich darauf klicke, bekomme ich
auch korrekt

MsgBox myShape.TopLeftCell.Row
MsgBox myShape.TopLeftCell.Address(0, 0)
MsgBox myShape.Name

gemeldet, aber leider wegen der Each-Schleife auch _alle_ anderen in
der Spalte. Ich will aber nur die eine, wo ich gerade drauf klicke.
--
/ /
/-/ MfG
/ /elmut
Eike Bimczok
2006-10-21 16:29:35 UTC
Permalink
Post by Helmut Gütschow
Am 21.10.06 haute info auf die Tasten
Hallo Eike!
Post by Eike Bimczok
Sub getRowOfShapes()
'shows the row number of the shapes
'10-2006 E.Bimczok
'www.profi-excel.de
Ich bin begeistert, danke. Soweit funktioniert das _fast_ so wie ich
Ich möchte nur die Zeilennummer von dem Objekt haben auf dem ich gerade
geklickt habe. Ich habe deine Routine z.B. in das Click-Ereignis vom
Steuerelement 'Checkbox' gelegt. Wenn ich darauf klicke, bekomme ich
auch korrekt
MsgBox myShape.TopLeftCell.Row
MsgBox myShape.TopLeftCell.Address(0, 0)
MsgBox myShape.Name
gemeldet, aber leider wegen der Each-Schleife auch _alle_ anderen in
der Spalte. Ich will aber nur die eine, wo ich gerade drauf klicke.
Hallo Helmut,

ich hatte das allgemein gehalten. Für deinen speziellen Fall benötigst
du die Kombination der beiden vorgeschlagenen Lösungen:

Sub angeklicktesSteuerelement()
'10-2006
'E.Bimczok
'http://www.profi-excel.de
Dim myShape As Object
Dim shapeName As String

If TypeName(Application.Caller) = "String" Then
shapeName = Application.Caller
For Each myShape In ActiveSheet.Shapes
If myShape.AlternativeText = shapeName Then
MsgBox "Zeilennummer des Objektes: " & _
myShape.TopLeftCell.Row
End If
Next myShape
End If

End Sub


Viel Erfolg und Gruß
Eike
--
http://www.profi-excel.de
Helmut Gütschow
2006-10-21 17:42:00 UTC
Permalink
Am 21.10.06 haute info auf die Tasten

Hallo Eike!
Post by Eike Bimczok
ich hatte das allgemein gehalten. Für deinen speziellen Fall
Danke, auch das funktioniert soweit, hier ist aber wieder das Problem,
das es wohl nur mit der Formular/Checkbox funktioniert und nicht mit
der Steuerelement/Checkbox. Das bringt wieder den Nachteil das ich
nicht prüfen kann ob ich die Checkbox gerade aktiviere oder
deaktiviere. Das geht zwar mit der Eigenschaft 'Zellverknüpfung', das
bringt aber wieder den Nachteil das man später keine Zeile mehr
einfügen kann, weil die Verknüpfung damit hin wäre :(

Wie auch immer vielen Dank für deine Unterstützung. Wenn es nicht
anders geht, nutze ich dafür eben eine normale Zelle und dort ein
'V'zum setzen, das sieht ja dann fast so aus wie eine Checkbox.
--
/ /
/-/ MfG
/ /elmut
Eike Bimczok
2006-10-21 18:24:43 UTC
Permalink
Post by Helmut Gütschow
Am 21.10.06 haute info auf die Tasten
Hallo Eike!
Post by Eike Bimczok
ich hatte das allgemein gehalten. Für deinen speziellen Fall
Danke, auch das funktioniert soweit, hier ist aber wieder das Problem,
das es wohl nur mit der Formular/Checkbox funktioniert und nicht mit
der Steuerelement/Checkbox. Das bringt wieder den Nachteil das ich
nicht prüfen kann ob ich die Checkbox gerade aktiviere oder
deaktiviere. Das geht zwar mit der Eigenschaft 'Zellverknüpfung', das
bringt aber wieder den Nachteil das man später keine Zeile mehr
einfügen kann, weil die Verknüpfung damit hin wäre :(
Wie auch immer vielen Dank für deine Unterstützung. Wenn es nicht
anders geht, nutze ich dafür eben eine normale Zelle und dort ein
'V'zum setzen, das sieht ja dann fast so aus wie eine Checkbox.
Hallo Helmut,

natürlich kannst du bei der Checkbox (Formular) prüfen, ob diese gerade
aktiviert oder deaktiviert wurde (ohne Zellverknüpfung):


Sub angeklicktesSteuerelement()
'10-2006
'E.Bimczok
'http://www.profi-excel.de
Dim myShape As Object
Dim shapeName As String

If TypeName(Application.Caller) = "String" Then
shapeName = Application.Caller
For Each myShape In ActiveSheet.Shapes
If myShape.AlternativeText = shapeName Then
MsgBox "Zeilennummer des Objektes: " & _
myShape.TopLeftCell.Row & vbCr & _
"Wert: " & myShape.DrawingObject.Value
End If
Next myShape
End If

End Sub


Gruß
Eike
--
http://www.profi-excel.de
Helmut Gütschow
2006-10-22 06:46:00 UTC
Permalink
Am 21.10.06 haute info auf die Tasten

Hallo Eike!
Post by Eike Bimczok
natürlich kannst du bei der Checkbox (Formular) prüfen, ob diese
[...]
Du bist super, herzlichen Dank, so wollte ich das haben:)

Eine kleine Frage noch, die Zeilennummer wird immer eine höher
gemeldet, was daran liegt das zumindest bei mir 'Zeile 1' gemeldet
wird, egal ob die Checkbox in Zeile 1 oder Zeile 2 platziert ist.
Ich kann sicher damit leben, ich kann ja 'Zeilennummer - 1' nutzen,
wäre aber Interessant zu wissen, ob das nur bei mir so ist.
Post by Eike Bimczok
'http://www.profi-excel.de
Habe ich auf jeden Fall in meine 'Favoriten' aufgenommen.
--
/ /
/-/ MfG
/ /elmut
Helmut Gütschow
2006-10-22 08:50:00 UTC
Permalink
Am 22.10.06 haute <***@gmx.de> auf die Tasten:

Hallo!
Post by Helmut Gütschow
Eine kleine Frage noch, die Zeilennummer wird immer eine höher
gemeldet, was daran liegt das zumindest bei mir 'Zeile 1' gemeldet
[...]
Hat sich erledigt, es lag an einer zu geringen Zeilenhöhe, ab 17,5
wird klappt es korrekt.
--
/ /
/-/ MfG
/ /elmut
Eike Bimczok
2006-10-22 13:30:18 UTC
Permalink
Hallo Helmut,
Post by Helmut Gütschow
Am 21.10.06 haute info auf die Tasten
Hallo Eike!
Post by Eike Bimczok
natürlich kannst du bei der Checkbox (Formular) prüfen, ob diese
[...]
Du bist super, herzlichen Dank, so wollte ich das haben:)
Bitte gerne. Danke auch für die Rückmeldung
Post by Helmut Gütschow
Eine kleine Frage noch, die Zeilennummer wird immer eine höher
gemeldet, was daran liegt das zumindest bei mir 'Zeile 1' gemeldet
wird, egal ob die Checkbox in Zeile 1 oder Zeile 2 platziert ist.
Ich kann sicher damit leben, ich kann ja 'Zeilennummer - 1' nutzen,
wäre aber Interessant zu wissen, ob das nur bei mir so ist.
Die Eigenschaft heißt TopLeftCell, d.h. die linke obere Zelle, in der
das Objekt liegt, wird zurückgegeben. Bei genauer Platzierung (ALT-Taste
beim Verschieben des Objektes gedrückt halten) stimmt die Zeilennummer auch.
Post by Helmut Gütschow
Post by Eike Bimczok
'http://www.profi-excel.de
Habe ich auf jeden Fall in meine 'Favoriten' aufgenommen.
:-) freut mich!
Gruß
Eike
--
http://www.profi-excel.de
Lesen Sie weiter auf narkive:
Loading...