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

Code(s) einkürzen

Code(s) einkürzen
21.01.2020 18:15:08
Leo
Hallo zusammen,
ich hab eine Frage zur Optimierung meiner Codes.
Hab im Tabellenblatt "Tabelle1" ca. 250 Schaltflächen implementiert.
Mit jeder einzelnen Schaltfläche wird ein vorher definiertes Tabellenblatt (z.B. "Tbl_Urlaub") geöffnet.
(siehe u.g. Code)
Gibt es einen Trick , (oder kann man diesen Code einkürzen) damit man den nachstehenden Code
nicht 250 mal schreiben muss?
Grüße
Leo
Sub Tbl_Urlaub_oeffnen_)
Sheets("Tbl_Urlaub)").Select
Range("W20").Select
End Sub

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code(s) einkürzen (Danke)
21.01.2020 19:07:12
Leo
Hallo Hajo_Zi,
OK,
hab die Message verstanden.
Danke
LG Leo
AW: Code(s) einkürzen
21.01.2020 19:04:55
volti
Hallo Leo,
wenn Du Formularsteuerelemente verwendest, kannst Du denen immer dasselbe Makro zuweisen und über den Schaltflächennamen entsprechend selektieren.
PS: Wenn Du Dir die Arbeit machen willst, kannst Du den Schaltflächennamen auch gleich dem Blattnamen setzen, dann wird der Code noch kürzer...
Sub MeineGemeinsameSchaltflaechenbearbeitung()
 Dim T As String
 MsgBox Application.Caller
 Select Case Application.Caller
 Case "Schaltfläche 3": T = "Tbl_Urlaub"
 Case "Schaltfläche 3": T = "Tbl_Arbeit"
 '...
 Case Else:             T = Application.Caller
 End Select
 Sheets(T).Select
 Range("W20").Select
End Sub
viele Grüße
Karl-Heinz

Anzeige
AW: Code(s) einkürzen
21.01.2020 19:35:45
volti
Hi,
hatte leider vergessen, meine Test-MSGBox rauszunehmen:
Sub MeineGemeinsameSchaltflaechenbearbeitung()
 Dim T As String
 Select Case Application.Caller
 Case "Schaltfläche 3": T = "Tbl_Urlaub"
 Case "Schaltfläche 3": T = "Tbl_Arbeit"
 '...
 Case Else:             T = Application.Caller
 End Select
 Sheets(T).Select
 Range("W20").Select
End Sub
viele Grüße
Karl-Heinz

Anzeige
Noch Einfacher wirds
21.01.2020 20:07:01
Daniel
Wenn man die Schaltfläche genau so benennt wie das Blatt.
Dann reicht ein Sheets(Applications.Caller).select als Code für alle Buttons dieser Art aus.
Gruß Daniel
Alternativvorschlag =HYPERLINK()
21.01.2020 19:05:05
ChrisL
Hi Leo
Ich würde die Tabellennamen in eine Hilfsspalte schreiben und mit der erwähnten Formel einen HYPERLINK erzeugen. Sieht zwar nicht ganz so schick aus wie Schaltflächen, dafür kommt nichts durcheinander (z.B. beim Löschen, Filtern usw.) und ist einfacher in der Wartung.
cu
Chris
AW: Code(s) einkürzen
21.01.2020 19:11:27
EtoPHG
Hallo Leo,
Zitat: Hab im Tabellenblatt "Tabelle1" ca. 250 Schaltflächen implementiert.
Die Mühe hättest du dir sparen können.
Soll den für jede dieser Schaltflächen, und ich nehme an, das sind Schaltflächen vom Typ Formularsteuerelement, der gleiche Code ablaufen oder soll abhängig von der Zellenposition des Steuerelements im Tabellenblatt "Tbl_Urlaub" eine andere Zelle in diesem aktiviert werden?
250 Steuerelemente oder ActiveX-Buttons in einem Blatt führen zu unnötiger Dateigrösse und Instabilitäten von Excel.
Besser wäre es dann ein Ereigniscode (z.B. Worksheet_BeforeRightClick, Worksheet_BeforeDoubleClick oder ggf. Worksheet_SelectionChange) zu codieren. Also warte ich auf eine Antwort meiner Frage.
Gruess Hansueli
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige