Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1652to1656
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

Command Button

Command Button
06.11.2018 11:07:46
Gunter
Hallo Zusammen
In einer Tabelle (hier als Beispiel https://www.herber.de/bbs/user/125181.xlsm) habe ich eine Vielzahl Button. In der Mustertabelle sind es zwei! Nun ist es so, dass bei Veränderungen im Code der Buttons, diese in einer recht grossen Anzahl Buttons ebenfalls anzupassen sind. Gibt es eine Möglichkeit das zusammen zufassen?
Für zweckdienliche Hinweise herzlichen Dank.
Gruss
Gunter

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Command Button
06.11.2018 11:13:01
Werner
Hallo Gunter,
lager doch den Code, der bei mehreren Button wohl gleich ist, in ein allgemeines Modul aus. In den entsprechenden Buttons rufst du dann im Klick-Event einfach das Makro im allgemeinen Modul auf.
Ansonsten Klassenprogrammierung - nicht meine Baustelle.
Gruß Werner
AW: Command Button
06.11.2018 11:50:20
Gunter
Hallo Werner
Prinzipiell eine gute Idee, den Code in ein Makro auszulagern. Ich habe das mal so probiert, allerdings passiert nun immer das Gleiche, sobald ich auf einen der Button drücke. Weisst du wie ich dem Makro "sagen" kann welcher Button den Aufruf ausgelöst hat?
Sorry ich bin nur "Gelegenheits-Programmierer".
Gruss
Gunter
Anzeige
AW: Command Button
06.11.2018 12:14:08
Rudi
Hallo,
z.B.
Private Sub CommandButton1_Click()
Call DasMakro(1)
End Sub
Private Sub CommandButton2_Click()
Call DasMakro(2)
End Sub
Sub DasMakro(intCMD As Integer)
Select Case intCMD
Case 1
'mach dies
Case 2
'mach das
End Select
End Sub

Gruß
Rudi
AW: Command Button
06.11.2018 12:50:13
Gunter
Hallo Rudi
Das hab ich ja im Prinzip. Ich möchte aber mit "Schleifen" vereinfachen, da ich an die 40 Button im Sheet habe und jedesmal das was gemacht werden soll bei jeder Aenderung an 40 Stellen eintragen muss. Nur als Beispiel das ist der Code, wenn der Button1 gedrückt wird
Private Sub CommandButton1_Click()
Dim x As Variant, i As Integer
i = Worksheets("Serial-Details").Cells(2, 8).Value
If i = 1 Then
'CommandButton1.BackColor = 12713921
UserForm1.TextBox1.MultiLine = True
x = WorksheetFunction.Transpose(WorksheetFunction.Transpose(Worksheets("Serial-Details"). _
Range("J2:BT2")))
UserForm1.TextBox1.Value = Join(x, vbLf)
UserForm1.Show vbModeless
i = i + 1
Worksheets("Serial-Details").Cells(2, 8).Value = i
Exit Sub
Else
i = 2
'CommandButton1.BackColor = &H8000000F
Unload UserForm1
Worksheets("Serial-Details").Cells(2, 8).Value = 1
End If
End Sub

Sprich es muss die Nummer der UF entsprechend variabel werden und auch in Worksheets("Serial-Details").Cells(2, 8).Value = 1 muss die "2" entsprechend als Variable ersetzt werden.
Gruss
Gunter
Anzeige
AW: Command Button
06.11.2018 13:14:16
Rudi
Hallo,
Sprich es muss die Nummer der UF entsprechend variabel werden und auch in Worksheets("Serial-Details").Cells(2, 8).Value = 1 muss die "2" entsprechend als Variable ersetzt werden.
kein Problem.
Private Sub CommandButton1_Click()
Call Gunter(UserForm1, 2)
End Sub
Private Sub CommandButton2_Click()
Call Gunter(UserForm3, 7)
End Sub
Sub Gunter(objUF As Object, lngRow As Long)
Dim x As Variant, i As Integer
i = Worksheets("Serial-Details").Cells(lngRow, 8).Value
If i = 1 Then
'CommandButton1.BackColor = 12713921
x = WorksheetFunction.Transpose(Worksheets("Serial-Details").Range("J2:BT2"))
x = WorksheetFunction.Transpose(x)
With objUF
With .TextBox1
.MultiLine = True
.Value = Join(x, vbLf)
End With
.Show vbModeless
End With
Worksheets("Serial-Details").Cells(lngRow, 8).Value = 2
Else
'CommandButton1.BackColor = &H8000000F
objUF.Hide
Worksheets("Serial-Details").Cells(lngRow, 8).Value = 1
End If
End Sub

Gruß
Rudi
Anzeige
AW: Command Button
06.11.2018 14:06:12
Gunter
Hallo Rudi
Super das funktioniert schon mal genau wie erhofft und gedacht. Nun noch eine Frage ich habe bisher eine UserForm_Initialize Routine drin, damit die UF's beim Oeffnen auf dem Bildschirm platziert werden. Dazu ist das der dazu gehörende Code.
Private Sub UserForm_Initialize()
Dim lngHWnd As Long, lngStyle As Long
Const STARTUP_MANUAL As Long = 0
StartUpPosition = STARTUP_MANUAL
If UserForms.Count = 1 Then
Top = 100 'anpassen...
Left = 100 'anpassen...
Else
With UserForms(UserForms.Count - 2)
Top = .Top
Left = .Left + .Width + 10
End With
End If
msngWidth = Width
msngHeightDifference = Height - UserForm1.Height
lngHWnd = FindWindow("ThunderDFrame", Caption)
lngStyle = GetWindowLong(lngHWnd, GWL_STYLE)
Call SetWindowLong(lngHWnd, GWL_STYLE, lngStyle Or WS_THICKFRAME)
End Sub

Kann man das da noch mit einbauen?
Gruss
Gunter
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige