Thema Datum  Von Nutzer Rating
Antwort
24.08.2017 09:59:38 Stefan
NotSolved
24.08.2017 11:16:31 Gast74502
NotSolved
24.08.2017 12:28:34 Stefan
NotSolved
Blau Command Buttons iterativ mit Makros verknüpfen
24.08.2017 19:13:24 Gast70117
NotSolved

Ansicht des Beitrags:
Von:
Gast70117
Datum:
24.08.2017 19:13:24
Views:
699
Rating: Antwort:
  Ja
Thema:
Command Buttons iterativ mit Makros verknüpfen

Quick&Dirty

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
Option Explicit
 
Sub Test()
'ACHTUNG Verweise ----------------------------------------
'Microsoft Visual Basic For Applications Extensibility 5.3
'---------------------------------------------------------
Const myClassType As String = "Forms.CommandButton.1"
Const myWidth As Single = 120
Const myHeight As Single = 24
 
Dim z As Integer, i As Integer, anz As Integer
Dim myTop, myLeft As Single
Dim oOle As OLEObject
 
   z = CountIt()
   If z > 0 Then myTop = NewTop(myHeight)
    
   On Error Resume Next
   anz = InputBox("Anzahl neuer Buttons : ", CStr(z) & " Buttons vorhanden ", 1)
   If Not IsNumeric(anz) Or anz = 0 Then Exit Sub
   On Error GoTo 0
    
   For i = 1 To anz
      Set oOle = ActiveSheet.OLEObjects.Add _
         (ClassType:=myClassType, _
         Left:=myLeft, Top:=myTop, Width:=myWidth, Height:=myHeight)
       
      If AddMacro(oOle.Name) = False Then oOle.Delete
       
      myTop = myTop + myHeight + 2
      myLeft = myLeft + myWidth + 10
   Next i
    
 
End Sub
 
Private Function CountIt() As Integer
Dim oOle As OLEObject
Dim i As Integer
For Each oOle In ActiveSheet.OLEObjects
   If oOle.progID = "Forms.CommandButton.1" Then i = i + 1
Next oOle
CountIt = i
End Function
 
Private Function NewTop(myHeight As Single)
Dim myTop As Single
Dim oOle As OLEObject
For Each oOle In ActiveSheet.OLEObjects
   If oOle.progID = "Forms.CommandButton.1" Then myTop = myTop + myHeight + 2
Next oOle
NewTop = myTop
End Function
 
Private Function AddMacro(myName As String) As Boolean
Const myLine1 As String = "Private Sub CBX_Click()"
Const myLine2 As String = "End Sub"
 
On Error GoTo fail:
'Sub CreateEventProcedure()
 
        Dim VBProj As VBIDE.VBProject
        Dim VBComp As VBIDE.VBComponent
        Dim CodeMod As VBIDE.CodeModule
        Dim LineNum As Long
        Const DQUOTE = """" ' one " character
 
        Set VBProj = ActiveWorkbook.VBProject
        Set VBComp = VBProj.VBComponents(ActiveSheet.Name)
        Set CodeMod = VBComp.CodeModule
        'ThisWorkbook.VBProject.VBComponents(ActiveSheet.Name).Activate
        With CodeMod
            LineNum = .CreateEventProc("Click", myName)
            LineNum = LineNum + 1
            .InsertLines LineNum, "    MsgBox " & DQUOTE & myName & DQUOTE
        End With
         
'End Sub
fail:
If Err.Number = 0 Then AddMacro = True
End Function

 


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
24.08.2017 09:59:38 Stefan
NotSolved
24.08.2017 11:16:31 Gast74502
NotSolved
24.08.2017 12:28:34 Stefan
NotSolved
Blau Command Buttons iterativ mit Makros verknüpfen
24.08.2017 19:13:24 Gast70117
NotSolved