Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1208to1212
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

OnAction Parameter mitgeben

OnAction Parameter mitgeben
Reinhard
Hallo,
zur Laufzeit wird in einjem Blatt ein Button erstellt.
Dieser Button soll dann ein Makro aufrufen und diesem einen Parameter übergeben.
Bei einem Test mit "Klappt" funktioniert es, klicke ich aber auf den Button so wird warum auch immer 1977 angezeigt als StrBlatt.
Was muß ich da ändern sodaß der Button funktioniert?
Wie kann ich einer Prozedur wie "PivotAktualisieren" je nach Sachlage den Namen eines Worksheets übergeben oder aber auch das Worksheet direkt als Objekt?
Und zwar zur laufzeit über OnAction.
Danke für das Interesse
Gruß
Reinhard
Sub test()
Call ButtonErstellen(worksheets("2011-03-31"))
End Sub
Sub ButtonErstellen(wks As Worksheet)
Dim T As Integer, L As Integer, W As Integer, H As Integer, btn As Button
With wks
L = .Range("C1").Left
T = .Range("C1").Top
W = 100
H = 20
Set btn = wks.Buttons.Add(L, T, W, H)
btn.Caption = "Pivot aktualisieren"
MsgBox wks.Name      'Anzeige: 2011-03-31
btn.OnAction = "'PivotAktualisieren " & wks.Name & "'"
MsgBox btn.OnAction  'Anzeige: Mappenname!'PivotAktualisieren 2011-03-31'
End With
End Sub
Sub PivotAktualisieren(ByVal strBlatt As String)
Dim PT As PivotTable
MsgBox strBlatt           'Anzeige: 1977
For Each PT In worksheets(strBlatt).PivotTables
PT.PivotTableWizard SourceType:=xlDatabase, SourceData:="PivotQuelle"
PT.RefreshTable
Next PT
End Sub
Sub Klappt()
Call PivotAktualisieren("2011-03-31")
End Sub



		

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: OnAction Parameter mitgeben
31.03.2011 13:15:59
Rudi
Hallo,
da sich doch der Button auf dem zu aktualisierenden Blatt befindet, kannst du doch einfach mit ActiveSheet arbeiten, ohne Parameterübergabe.
Gruß
Rudi
Was soll das werden...
31.03.2011 13:18:18
Luc:-?
btn.OnAction = "'PivotAktualisieren " & wks.Name & "'", Reinhard?
Willst du etwa mit einem Button ein Pgm parametriert aufrufen? Das kannst du von beliebigen Objekten aus machen, bspw in OpenScript und Lingo, in VBA wäre das aber ein Novum, sprich kannste vajessn!
Gruß Luc :-?
AW: Was soll das werden...
31.03.2011 13:34:04
Reinhard
Hallo Luc,
ich denk mir halt, da das Nachfolgende auch funktioniert, ich also den Parameter fest vorgeb, müßte es doch auch funktionieren wenn ich für den Parameter eine Variable nehmen.
Sub ButtonErstellen()
Dim T As Integer, L As Integer, W As Integer, H As Integer, btn As Button
With Worksheets("Tabelle1")
L = .Range("C1").Left
T = .Range("C1").Top
W = 100
H = 20
Set btn = .Buttons.Add(L, T, W, H)
btn.Caption = "Pivot aktualisieren"
btn.OnAction = "'PivotAktualisieren ""Huhu""'"
End With
End Sub
Sub PivotAktualisieren(strText As String)
MsgBox strText & strText & strText
End Sub

Gruß
Reinhard
Anzeige
Umleitung
31.03.2011 13:32:44
Rudi
Hallo,
Sub ButtonErstellen(wks As Worksheet)
Dim T As Integer, L As Integer, W As Integer, H As Integer, btn As Button
With wks
L = .Range("C1").Left
T = .Range("C1").Top
W = 100
H = 20
Set btn = wks.Buttons.Add(L, T, W, H)
With btn
.Caption = "Pivot aktualisieren "
.OnAction = "test"
.Name = "b_" & wks.Name
End With
End With
End Sub

Sub ttt()
ButtonErstellen Sheets(2)
End Sub

Sub test()
MsgBox Mid(ActiveSheet.Shapes(Application.Caller).Name, 3)
End Sub

Gruß
Rudi
Anzeige
AW: Umleitung
31.03.2011 13:45:21
Reinhard
Hallo Rudi,
der Umweg über Application.Caller ist ja noch besser als das mit Activesheet was auch gut funktioniert.
Ich nehm dann einen AktivX Commandbutton, dann habe ich ja noch den "Tag" zur Verfügung, bin zufrieden, danke dir.
Aber grundsätzlich gesehen interessiert mich die Parameterübergabe,
so wie von mir angedacht aber nicht hinbekommen. Deshalb Frage noch offen.
Gruß
Reinhard
AktiveX Commandbutton
31.03.2011 14:08:01
Rudi
Hallo,
das mit dem Tag ist richtig.
Ich bin aber gespannt, wie du dem ein Makro zuweist. ;-)
Gruß
Rudi
AW: AktiveX Commandbutton
31.03.2011 14:38:27
Reinhard
Hallo Rudi,
nein Makro wollte ich nicht, ich dachte mit Name und Tag könnte icch ja zei Parameter übergeben, so ungefähr.
Aber ein CB in einem Blatt hat wohl keinen Tag.
Und onaction gibts da ja auch nicht.
Vergiss halt die Idee :-)
Gruß
Reinhard
Anzeige
AW: AktiveX Commandbutton
31.03.2011 18:51:14
Nepumuk
Hallo,
wenn du per OnAction einen String übergeben willst musst du den in Anführungszeichen setzen.
btn.OnAction = "'PivotAktualisieren """ & wks.Name & """'"

In deiner Konstruktion wird ein Integer erzeugt welcher bei der Übergabe berechnet wird. 2011 minus 3 minus 31 gibt 1977.
Gruß
Nepumuk
OnAction ein Objekt als Parameter dem makro mitgeb
31.03.2011 21:13:27
Reinhard
Hallo Nepumuk,
dankeschön. Jetzt bin ich überreich beschenkt mit Lösungen für mein aktuelles Problem.
Aus Wissensgründen für die Zukunft, wie übergebe ich nicht den namen eines Worksheets an die aufgerufene Prozedur durch OnAction, sondern das Worksheet selbst als Objekt?
Nachfolgender Code kappt natürlich nicht in der zeile
btn.OnAction = "'PivotAktualisieren2 """ & Worksheets("Tabelle1") & """'"
kommt Fehler 438.
Ich habe schon mit einigen Anführungszeichenkombinationen rumzubasteln, bislang erfolglos.
Gruß
Reinhard
Option Explicit
Sub ButtonErstellen()
Dim T As Integer, L As Integer, W As Integer, H As Integer, btn As Button
With Worksheets("Tabelle1")
L = .Range("C1").Left
T = .Range("C1").Top
W = 100
H = 20
Set btn = .Buttons.Add(L, T, W, H)
btn.Caption = "Pivot aktualisieren"
btn.OnAction = "'PivotAktualisieren """ & .Name & """'"
Set btn = .Buttons.Add(L + 30, T + 30, W, H)
btn.Caption = "Pivot aktualisieren2"
btn.OnAction = "'PivotAktualisieren2 """ & Worksheets("Tabelle1") & """'"
'btn.OnAction = "'PivotAktualisieren ""Huhu""'"
End With
End Sub
Sub PivotAktualisieren(strText As String)
MsgBox strText & strText & strText
End Sub
Sub PivotAktualisieren2(wks As Worksheet)
MsgBox wks.Name & wks.Name
End Sub

Anzeige
AW: OnAction ein Objekt als Parameter dem makro mitgeb
31.03.2011 23:03:51
Nepumuk
Hallo,
wenn du den Codenamen der Tabelle benutzt klappt das.
Option Explicit

Sub test()
    Call ButtonErstellen(Tabelle1)
End Sub

Sub ButtonErstellen(wks As Worksheet)
    Dim T As Integer, L As Integer, W As Integer, H As Integer, btn As Button
    With wks
        L = .Range("C1").Left
        T = .Range("C1").Top
        W = 100
        H = 20
        Set btn = wks.Buttons.Add(L, T, W, H)
        btn.Caption = "Pivot aktualisieren"
        MsgBox wks.Name 'Anzeige: 2011-03-31
        btn.OnAction = "'PivotAktualisieren " & wks.CodeName & "'"
        MsgBox btn.OnAction 'Anzeige: Mappenname!'PivotAktualisieren 2011-03-31'
    End With
End Sub

Sub PivotAktualisieren(strBlatt As Worksheet)
    
    MsgBox strBlatt.Name
    
End Sub

Gruß
Nepumuk
Anzeige
AW: OnAction ein Objekt als Parameter dem makro mitgeb
31.03.2011 23:39:13
Reinhard
Hallo Nepumuk,
sehr schön, auch das klappt vorzüglich, danke dir.
Gruß
Reinhard
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge