Autor
|
Thema: VBA Blattwechsel unterbrechen (3826 mal gelesen)
|
MWN Mitglied Dipl.-Ing.
Beiträge: 492 Registriert: 14.02.2007
|
erstellt am: 27. Jun. 2008 07:49 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen Kollegen im Excel - Forum, heut möchte ich einmal eure geschätzte Hilfe in Anspruch nehmen. Ich bin dabei, mir ein Excel - Workbook zu basteln, was mehrere Tabellenblätter (40 an der Zahl) enthält. Da man meist sehr weit scrollen muss, um wieder an die "Startseite" zu gelangen, habe ich mir auch eine Sub geschrieben, die mir auf das soeben selektierte Tabellenblatt einen Button setzt, diesen anwählt und ihm ein Makro gibt, mit dessen Hilfe ich zur Startseite gelange. Das funktioniert auch soweit, nur ist mein Problem nun, dass ich den Commandbutton auch wieder löschen muss! Kennt also jemand eine Lösung, wie ich das bewerkstelligen kann? Ich dachte so daran, dass ganze beim Blattwechsel durchführen zu lassen. Sprich den Blattwechsel, wenn man ihn von Hand ausführt, zu unterbrechen, den Commandbutton zu löschen und dann erst das neue Blatt anzuzeigen. Ich bin über jede Hilfe dankbar. Grüße Tobias Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 27. Jun. 2008 08:26 <-- editieren / zitieren --> Unities abgeben: Nur für MWN
Moin, muß es denn ein button sein? Oder darf es auch z.B. ein Hyperlink sein? Dann könnte ich mir das so vorstellen: in die Tabellenblätter 2-40:
Code: Private Sub Worksheet_Activate() ActiveSheet.Hyperlinks.Add Anchor:=ActiveSheet.Cells(1, 1), Address:="", SubAddress:= _ ThisWorkbook.Worksheets(1).Name & "!A1", TextToDisplay:=ThisWorkbook.Worksheets(1).Name End SubPrivate Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) Cells(1, 1).ClearContents End Sub
Zellen sind natürlich wie immer anzupassen, derzeit wird der hyperlink in Zelle A1 des jeweiligen Blattes geschrieben.
------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... System-Info Excel -Suche RuA-Suche FAQ-ACAD Hilfe zu CAD.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MWN Mitglied Dipl.-Ing.
Beiträge: 492 Registriert: 14.02.2007
|
erstellt am: 27. Jun. 2008 08:41 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen Runkelrübe, danke erst einmal für die schnelle Antwort. Mit dem Link hatte ich mich schon beholfen, nur kam von einem einzigen Anwender der Einwand "Na das sieht man ja nicht richtig" - alle anderen machten mit und nun muss das ganze umgestrickt werden. Na ja... Ich habe es ja auch soweit, dass der Button gesetzt wird, wenn der Anwender das Tabellenblatt wechselt. Klickt der Anwender auf den Button, so löscht er sich selber und wechselt die Ansicht auf das Starttabellenblatt ("Startseite"). Wechselt der Anwender jedoch das Tabellenblatt per Hand, so löscht sich der Button nicht und bleibt leider erhalten. Und das ist es, was ich nicht möchte. Deshalb will ich den Blattwechsel unterbrechen, den Button entfernen lassen und dann auf das andere Blatt wechseln. Sofern das machbar ist, natürlich! Grüße Tobias Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 27. Jun. 2008 09:29 <-- editieren / zitieren --> Unities abgeben: Nur für MWN
Sorry, mir fehlt ca. ein Hektoliter Kaffee heute Morgen, ich kann's nur in umständlich, bzw radikal: Code: Sub Wechsel() Dim a%, b% For a = 1 To ThisWorkbook.Worksheets.Count For b = 1 To Sheets(a).Shapes.Count If ThisWorkbook.Sheets(a).Shapes(b).Name Like "CommandButton*" Then ThisWorkbook.Sheets(a).Shapes(b).Delete End If Next b Next a End Sub
und in die einzelnen Blätter:
Code: Private Sub Worksheet_Activate() Call Wechsel End Sub
löschte alle CommandButtons in der Arbeitsmappe. hth [rredit] ach ja: "nur kam von einem einzigen Anwender der Einwand "Na das sieht man ja nicht richtig" " -> dann mach es groß und rot und schenk ihm ne Brille [/rredit] ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... System-Info Excel -Suche RuA-Suche FAQ-ACAD Hilfe zu CAD.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MWN Mitglied Dipl.-Ing.
Beiträge: 492 Registriert: 14.02.2007
|
erstellt am: 27. Jun. 2008 09:48 <-- editieren / zitieren --> Unities abgeben:
Dann sollte ich dich wohl eher statt 10 U's 10 Pott Kaffee vorbeischicken? Deinen Codeschnipsel habe ich gerade ausprobiert und erfunktioniert auch einwandfrei, er hat nur einen entscheideneden Nachteil: er löscht mir auch die zwei Buttons auf meiner Startseite! Und das geht ja schon mal gar nicht! Gibt es denn wirklich gar keine Möglichkeit den Balttwechsel zu unterbrechen, den Code auszuführen und dann weiterzumachen? Das wär doch so einfach: auf anderes Tabellenblatt klicken, wechsel wird angehalten bzw. nicht ausgeführt, Code (activesheet.buttons.delete) wird ausgeführt, angeklicktes Tabellenblatt wird angezeigt. Ist doch ganze einfach, oder? Grüße und nochmals Danke Tobias Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Moderator Straßen- / Tiefbau
Beiträge: 8075 Registriert: 09.03.2006 MS-Office 365 ProPlus x86 WIN7(x64)
|
erstellt am: 27. Jun. 2008 10:01 <-- editieren / zitieren --> Unities abgeben: Nur für MWN
Zitat: Original erstellt von MWN: Dann sollte ich dich wohl eher statt 10 U's 10 Pott Kaffee vorbeischicken? ;) Deinen Codeschnipsel habe ich gerade ausprobiert und erfunktioniert auch einwandfrei, er hat nur einen entscheideneden Nachteil: er löscht mir auch die zwei Buttons auf meiner Startseite! Und das geht ja schon mal gar nicht!
Das mit dem kaffee wär mal was Neues und sinnvoll noch dazu Wenn das das einzige Prob daran ist: Laß die Schleife von 2 starten ;-) oder klammer das Startblatt via Abfrage if sheets(a).name <> "NamedesStartBlatts" aus. Aber Du hast ja Recht, es hört sich soo einfach an... vielleicht kommt ja noch wer mit Ahnung vorbei sorry, ich bin erstmal raus, wenn mir wider Erwarten noch was einfällt, melde ich mich. ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... System-Info Excel -Suche RuA-Suche FAQ-ACAD Hilfe zu CAD.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MWN Mitglied Dipl.-Ing.
Beiträge: 492 Registriert: 14.02.2007
|
erstellt am: 27. Jun. 2008 10:17 <-- editieren / zitieren --> Unities abgeben:
|
Hofe Mitglied Werkzeugmacher
Beiträge: 439 Registriert: 12.01.2008 Computer: Aldi Schreibtisch: Ikea Werkbank: Baumarkt Software: 1967-2021, viele Updates und SP's, aber sicher nicht alle, deswegen immer wieder Sicherheitslücken
|
erstellt am: 28. Jun. 2008 12:47 <-- editieren / zitieren --> Unities abgeben: Nur für MWN
|
MWN Mitglied Dipl.-Ing.
Beiträge: 492 Registriert: 14.02.2007
|
erstellt am: 30. Jun. 2008 07:07 <-- editieren / zitieren --> Unities abgeben:
Guten Morgen Hofe, klar, kein Problem, schließlich sind wir ja zum Wissenstausch hier! In einem eigenen Modul hab ich folgendes:
Code: Private Sub Button_Hinzufuegen() Dim MyButton As Button Set MyButton = ActiveSheet.Buttons.Add(411.75, 15.75, 132.75, 24) With MyButton .OnAction = "Startseite_Anzeigen" .Caption = "zurück zur Startseite" End With End Sub
Und damit das ganze noch seinen Dienst versieht, habe ich in der obersten Arbeitsmappe, genannt "Diese Arbeitsmappe", folgendes:
Code: Private Sub Workbook_SheetActivate(ByVal Sh As Object) If ActiveSheet.Name <> "Startseite" Then If ActiveSheet.Buttons.Count >= 1 Then ActiveSheet.Buttons.Delete End If Application.OnTime Now + TimeValue("00:00:01"), "Button_Hinzufuegen" End If End Sub
Viel Spass beim ausprobieren! Grüße Tobias Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hofe Mitglied Werkzeugmacher
Beiträge: 439 Registriert: 12.01.2008 Computer: Aldi Schreibtisch: Ikea Werkbank: Baumarkt Software: 1967-2021, viele Updates und SP's, aber sicher nicht alle, deswegen immer wieder Sicherheitslücken
|
erstellt am: 30. Jun. 2008 12:41 <-- editieren / zitieren --> Unities abgeben: Nur für MWN
|
MWN Mitglied Dipl.-Ing.
Beiträge: 492 Registriert: 14.02.2007
|
erstellt am: 30. Jun. 2008 12:47 <-- editieren / zitieren --> Unities abgeben:
Hallo Hofe, verätst du uns vielleicht auch, in welche Richtung dein Projekt geht, bzw. für was du den Codeschnipsel verwenden möchtest? Vielleicht hilft es uns ja auch weiter! Grüße Tobias [Diese Nachricht wurde von MWN am 30. Jun. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hofe Mitglied Werkzeugmacher
Beiträge: 439 Registriert: 12.01.2008 Computer: Aldi Schreibtisch: Ikea Werkbank: Baumarkt Software: 1967-2021, viele Updates und SP's, aber sicher nicht alle, deswegen immer wieder Sicherheitslücken
|
erstellt am: 24. Jul. 2008 11:52 <-- editieren / zitieren --> Unities abgeben: Nur für MWN
Hallo Tobias, sorry, ich habe eben erst bemerkt, dass Du nochmal gepostet hast. Ich benutze einen recht großen Button in einem Tabellenblatt, in dem außer dem Button nichts zu sehen ist, der Button dient dazu, eine Userform mit Menü anzuzeigen. Wird in diesem Menü etwas ausgewählt, verschwindet die Userform wieder und irgendeine Aktion wird ausgeführt. Da die bei den Aktionen angezeigten Userforms, Msg-Boxen oder Inputboxen den großen Button nicht immer verdecken, blende ich ihn mit ".visible=False" aus. Das funktioniert aber nicht immer zuverlässig, unabhängig davon, ob ScreenUpdating auf True oder auf False steht. Deswegen wollte ich versuchen, den Button nach Benutzung ganz zu löschen und bei Bedarf wieder neu zu erstellen. Ich hab mir die Zeit dafür aber noch nicht genommen, da das Projekt ständig wächst und es in meinem Fall mit dem Button ja nur um Optik geht, da sind andere Dinge eben wichtiger Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|