Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1164to1168
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
Inhaltsverzeichnis

Caption eines CB ermitteln

Caption eines CB ermitteln
Stefan
Hallo Ihr,
ich rufe aus verschiedenen Arbeitsblättern (und mit verschiedenen CommandButtons) immer die gleiche Routine auf. Jetzt möchte ich die Caption des aufrufenden Buttons ermitteln bzw. in der aufgerufenen Prozedur verwenden. Ich habe aber ekinerlei Ahnung, wie das geht. Könnt Ihr helfen?
Danke + Gruss
STefan
AW: Caption eines CB ermitteln
06.07.2010 19:21:07
Gerd
Hallo Stefan,
Commandbuttons in der Tabelle, eingefügt aus ActiveXSteuerelemente oder Formularleiste?
Deinen Code zeigen, erschwert die Sache natuerlich auch nicht. :-)
Gruß Gerd
AW: Caption eines CB ermitteln
06.07.2010 19:32:04
Stefan
Hallo Gerd,
es sind ActiveXElemente..
Der Code ist recht schlicht:
ActiveWorkbookWorksheets("Control").Activate
Mein Problem ist: der Aufruf erfolgt von verschiedenen Blättern, bzw. da sind die Buttons und so kommt z.B. der Name "CommandButton1" doppelt vor. Die Beschriftung ist aber unterschiedlich, deswegen will ich die auslesen weil ich damit dann Ereignisse auslösen kann.
Gruss
Stefan
Anzeige
AW: Caption eines CB ermitteln
06.07.2010 19:53:45
Beverly
Hi Stefan,
befindet sich dein geposteter Code in einem allgemeinen Modul? Dann deklariere dort eine Public Variable und schreibe die Caption im Click Ereignis jedes CommandButtons auf diese Variable - dann kannst du sie in dem Marko im allgemeinen Modul weiter verwenden.


CommandButton1.Caption owT
06.07.2010 19:21:32
Peter.H
.
AW: CommandButton1.Caption owT
06.07.2010 19:24:38
Stefan
Hallo,
und Danke für die Antwort. Da habe ich mich schlecht ausgedrückt: ich "kenne" den aufrufenden Button nicht, bzw. will mich davor drücken in jedem Aufruf den COde zu ändern. Eigentlich suche ich wohl nach dem zuletzt aktiven Button.
Gruss
Stefan
Anzeige
AW: CommandButton1.Caption owT
06.07.2010 22:59:22
Gerd
Mein Problem ist: der Aufruf erfolgt von verschiedenen Blättern, bzw. da sind die Buttons und so kommt z.B. der Name "CommandButton1" doppelt vor. Die Beschriftung ist aber unterschiedlich, deswegen will ich die auslesen weil ich damit dann Ereignisse auslösen kann.
In Verbindung mit dem Blattnamen sind auch Commandbutton-Namen eindeutig.
bzw. will mich davor drücken in jedem Aufruf den COde zu ändern. Eigentlich suche ich wohl nach dem zuletzt aktiven Button.
Eine Möglichkeit hat dir Karin skizziert.
Wie u. wo in welchem Code möchtest Du den "behaltenen" Button-Identifizierer einsetzen?
Gruß Gerd
Anzeige
AW: CommandButton1.Caption owT
08.07.2010 08:14:21
Stefan
Ich will in dem aufgerufenen Blatt in drei nebeneinanderstehenden Spalten ersten den Namen (Caption) des aufrufenden Buttons speichern und darauf folgend das Datum und die Uhrzeit.
AW: CommandButton1.Caption owT
08.07.2010 08:55:04
Beverly
Hi Stefan,
in einem allgemeinen Modul diesen Code:
Sub Aufruf(strCaption As String, strTabelle As String)
Dim lngLetzte As Long
With Worksheets(strTabelle)
lngLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), _
.Cells(.Rows.Count, 1).End(xlUp).Row, .Rows.Count) + 1
.Cells(lngLetzte, 1) = strCaption
.Cells(lngLetzte, 2) = Date
.Cells(lngLetzte, 3) = Format(Time, "hh:mm:ss")
End With
ActiveWorkbook.Worksheets("Control").Activate
End Sub
Und für jeden CommandButten den Code nach diesem Prinzip:
Private Sub CommandButton1_Click()
Aufruf CommandButton1.Caption, CommandButton1.Parent.Name
End Sub



Anzeige
warum setzt Du Karins Vorschlag nicht um ?
08.07.2010 08:55:09
Matthias
Hallo Stefan
{Hallo - Text - Gruß} - soviel Zeit sollte immer sein - oder ist es noch zu zeitig ;o)
Warum setzt Du denn Karins Vorschlag nicht um?
hier das Bsp. (3 Blätter, 3xCommandbutton1)- Die Eigenschaft .Caption kannst Du ja selbst ändern.
https://www.herber.de/bbs/user/70484.xls
Gruß Matthias
AW: warum setzt Du Karins Vorschlag nicht um ?
08.07.2010 09:37:58
Stefan
Hallo,
der Rüffel mit "Gruß - Meldung - Gruß" (wer das noch kennt) war zu Recht, Entschuldigung.
Karins Vorschlag (in Abwandlung) ist das, was ich habe, oder tue. Ich dachte eigentlich Excel "merkt" sich das letzte aktive Steuerelement und ich komme darum herum, in den Code jedes aufrufenden Buttons einzugreifen, aber wahrscheinlich werde ich wohl doch die Kärrnerarbeit auf mich nehmen müssen.
Danke Euch für die Hilfe
Gruß
Stefan
Anzeige
Klassenprogrammierung ActiveX-CommancButton
08.07.2010 09:46:13
Beverly
Hi Stefan,
du hast noch die Möglichkeit, es mittels Klassenprogrammierung zu lösen:
Code im Workbook_Open:
Option Explicit
Private Sub Workbook_Open()
SchalterInitialisieren
End Sub

Code in einem allgemeinen Modul:
Option Explicit
Public arrSchalter() As New clsButton
Sub SchalterInitialisieren()
Dim wshTabelle As Worksheet
Dim oobjElement As OLEObject
Dim intSchalter As Integer
intSchalter = 1
For Each wshTabelle In Worksheets
With wshTabelle
For Each oobjElement In .OLEObjects
If oobjElement.progID = "Forms.CommandButton.1" Then
ReDim Preserve arrSchalter(1 To intSchalter)
Set arrSchalter(intSchalter).clSchalter = wshTabelle.OLEObjects(oobjElement. _
Name).Object
intSchalter = intSchalter + 1
End If
Next oobjElement
End With
Next wshTabelle
End Sub

Außerdem ein Klassenmodul erstellen mit Namen clsButton und dort diesen Code:
Option Explicit
Public WithEvents clSchalter As msforms.CommandButton
Private Sub clSchalter_Click()
Dim lngLetzte As Long
With Worksheets(clSchalter.Parent.Name)
lngLetzte = IIf(IsEmpty(.Cells(.Rows.Count, 1)), .Cells(.Rows.Count, 1).End(xlUp).Row, . _
Rows.Count) + 1
.Cells(lngLetzte, 1) = clSchalter.Caption
.Cells(lngLetzte, 2) = Date
.Cells(lngLetzte, 3) = Format(Time, "hh:mm:ss")
End With
End Sub



Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige