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

860to864: shapes("Button")-Text Variable zuordnen

shapes("Button")-Text Variable zuordnen
09.04.2007 11:34:00
Frank

Hallo aus Bremen.
Ich habe 26 Alphabet-Schaltflächen (A ... Z) in ein Tabellenblatt eingefügt und rufe mit jedem einzelnen dieser shapes das selbe Makro auf. Ist ja noch kein Problem. Aber, ich möchte mit diesem Makro den Text (= Buchstaben A ... Z) aus dem jeweils "geklickten" Button einer Variablen zuweisen. Und das ist das Problem. Wie geht das? das Blatt ist geschützt und die Buttons werden ja NICHT selected.
shapes("Button 3xy") xy steht für eine von 26 Alphabet-Schaltflächen ("Button" aus der Formular-Toolbox; kein "CommandButton" aus der Steuerelement-Toolbox).
Mein bisher kläglicher Code:


Sub zeige_alle()  ' alternativ z. B. SchaltflächeXYZ_BeiKlick
Worksheets("Tabellenansicht").Activate
ActiveSheet.shapes("Button 310").Select ' es soll ja kein spezieller Button asugewertet  _
werden _
und auch nicht selected werden!
With ActiveSheet ' = Worksheets("Tabellenansicht")
NName = Selection.Characters.Text 'funktioniert nur, weil hier das Shape-Objekt  _
markiert wurde
'NName = CDbl(Textfeld.TextFrame.TextRange.Text) ' aufgeschnapptes Fragment
Call suchen(NName)
End Sub

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: shapes("Button")-Text Variable zuordnen
09.04.2007 12:11:41
Josef Ehrensberger
Hallo Frank,
das geht so.
Sub test()
Dim objShp As Shape

Set objShp = ActiveSheet.Shapes(Application.Caller)

MsgBox objShp.DrawingObject.Characters.Text

End Sub

Gruß Sepp
Anzeige
AW: shapes("Button")-Text Variable zuordnen
09.04.2007 14:39:35
Frank
Hallo Josef (Sepp),
herzlichen Dank für Deine Bemühungen.
Und auch noch einmal an Beni und Ramses.
Erstaunlich finde ich (noch) dass dies mit nur 3 Zeilen auskommt. Ich hätte nicht unter 10 Zeilen aufgegeben ;-)
Nachfolgend einmal zur Info der gesamte Makro-Code.
In einer Tabelle wird in der Spalte E ab Zeile 5 der erste Nachname beginnend mit dem Buchstaben der geklickten Taste gesucht. Ín Zelle E4 steht die Spaltenüberschrift "Nachname". Möchte aber noch die MsgBox vermeiden und statt dessen zum letzten Eintrag des im Alphabet davor stehenden Buchstabens springen.
Werde mir jetzt unbedingt mal ein/zwei Bücher zum Thema zulegen; Versprochen. (Bernd Held, etc.)
Gruß Frank

Sub zeige_NachName()  ' alternativ z. B. Schaltfläche-DIE-AKTUELLE-?-_BeiKlick
Dim objShp As shape   ' Variante von Josef Ehrensberger  am 09.04.2007 12:11:41
Dim NName As String   ' Variante von Rainer (Ramses)     am 08.04.2007 14:57:22
Dim scRow As Range    ' Das ist ein Problem der Deklaration :-)
Set objShp = ActiveSheet.shapes(Application.Caller) 'Josef
NName = objShp.DrawingObject.Characters.Text        'Josef
NName = NName & "*"
Set scRow = Columns(5).Find(What:=NName, After:=Range("E4"), LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=True)
If scRow Is Nothing Then                            'Ramses
MsgBox "Nachname beginnend mit " & NName & " ist nicht vorhanden"  'Ramses
Exit Sub
End If
ActiveWindow.ActivePane.ScrollRow = scRow.Row       'Ramses
'Sheets("Grundlagen").Range("i2").Value = NName  ' inkl. "*" !
End Sub

Anzeige
AW: shapes("Button")-Text Variable zuordnen
09.04.2007 15:44:03
Josef Ehrensberger
Hallo Frank,
Ungetestet.
Sub zeige_NachName()
Dim objShp As Shape
Dim NName As String
Dim scRow As Range
Dim intC As Integer

Set objShp = ActiveSheet.Shapes(Application.Caller)
NName = objShp.DrawingObject.Characters.Text
intC = Asc(NName)

Do
    Set scRow = Columns(5).Find(What:=NName & "*", After:=Range("E4"), _
        LookIn:=xlValues, _
        LookAt:=xlPart)
    
    If Not scRow Is Nothing Then Exit Do
    
    intC = intC - 1
    
    If intC < 65 Then
        Set scRow = Range("E5")
        Exit Do
    End If
    
    NName = Chr(intC)
    
Loop

ActiveWindow.ActivePane.ScrollRow = scRow.Row

End Sub

Und das mit "Bernd Held" war hoffentlich nur ein verspäteter Aprilscherz, oder?
Gruß Sepp
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige