Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Code mit Button ein und ausschalten

VBA Code mit Button ein und ausschalten
14.08.2019 11:05:01
Krogi
Hallo zusammen,
ich möchte gerne folgenden unten gezeigten Code (Fadenkreuz-Übersicht für große Tabellen) über eine Schaltfläche (also einen Button anlegen) ein- und ausschalten können, da die Funktion nicht immer benötigt wird.
Ich bin Laie... und kriegs nicht hin. Ich hoffe auf Hilfe und bedanke mich im Voraus für jeden Hinweis.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Settings
wght = 2# 'Linienstärke in Punkt
DS = msoLineSquareDot 'linienart
'möglich sind:
'        msoLineDash            'gestrichelt
'        msoLineDashDot         'strichpunkt
'        msoLineDashDotDot      'strichpunktpunkt
'        msoLineRoundDot        'runde punkte
'        msoLineSolid           'durchgehende Linie
'        msoLineSquareDot       'eckige Punkte
FC = 23 'Farbe der Linie
'    64=schwarz
'     1=weiss
'     2=rot
'     3=grün
'     4=blau
EAL = msoArrowheadLong    'Pfeilkopflänge
'möglich sind:
'        msoArrowheadShort          'kurz
'        msoArrowheadLengthMedium   'mittel
'        msoArrowheadLong           'lang
EAW = msoArrowheadWide   'Pfeilkopfbreite
'möglich sind:
'        msoArrowheadNarrow       'dünn
'        msoArrowheadWidthMedium  'mittel
'        msoArrowheadWide         'dick
EAS = msoArrowheadStealth  'Pfeilkopfstil
'möglich sind:
'        msoArrowheadNone         'keiner
'        msoArrowheadOval         'oval
'        msoArrowheadDiamond      'diamantform
'        msoArrowheadOpen         'offener Kopf
'        msoArrowheadStealth      'hinten spitz
'        msoArrowheadTriangle     'dreieckig
'______________________________________________________________________________________
On Error GoTo errHandler1 'Fehler abfangen
'derzeitig bekannt:
' # Spalten/Zeilenweise Markierung
' # wenn Pfeile bereits gelöscht
'alte löschen
ActiveSheet.Shapes("crossx").Delete
ActiveSheet.Shapes("crossy").Delete
errHandler1:
'entweder weiter die Fehler behandeln und ausgeben oder einfach nix weiter machen :)
On Error GoTo errHandler2 'Fehler abfangen
'aktive Zelle merken
xx = ActiveCell.Column
yy = ActiveCell.Row
x = 0
y = 0
For i = 1 To Cells(yy, xx).Column - 1
x = x + Cells(1, i).Width
Next i
For i = 1 To Cells(yy, xx).Row - 1
y = y + Cells(i, 1).Height
Next i
'Zeichnen - waagerecht
ActiveSheet.Shapes.AddLine(0, y + Cells(yy, xx).Height / 2, x, y + Cells(yy, xx).Height / 2).  _
_
_
Select
With Selection.ShapeRange.Line
.Weight = wght
.DashStyle = DS
.ForeColor.SchemeColor = FC
.BackColor.RGB = RGB(BCr, BCg, BCb)
.BeginArrowheadStyle = msoArrowheadNone
.EndArrowheadLength = EAL
.EndArrowheadWidth = EAW
.EndArrowheadStyle = EAS
End With
Selection.Name = "crossx"
'zeichnen - senkrecht
ActiveSheet.Shapes.AddLine(x + Cells(yy, xx).Width / 2, 0, x + Cells(yy, xx).Width / 2, y). _
Select
With Selection.ShapeRange.Line
.Weight = wght
.DashStyle = DS
.ForeColor.SchemeColor = FC
.BackColor.RGB = RGB(BCr, BCg, BCb)
.BeginArrowheadStyle = msoArrowheadNone
.EndArrowheadLength = EAL
.EndArrowheadWidth = EAW
.EndArrowheadStyle = EAS
End With
Selection.Name = "crossy"
'alte Markierung wiederherstellen
Cells(yy, xx).Select
errHandler2:
'entweder weiter die Fehler behandeln und ausgeben oder einfach nix weiter machen :)
End Sub

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Code mit Button ein und ausschalten
14.08.2019 11:11:33
Krogi
alternativ sonst auch gerne per Doppelklick- Funktion...
AW: VBA Code mit Button ein und ausschalten
14.08.2019 11:38:09
peterk
Hallo
Schreib folgenden Code isn gleiche Modul
Public useShape As Boolean

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  useShape = Not useShape
  Cancel = True
  Call Worksheet_SelectionChange(Target)
End Sub

Und füge folgende Zeile in den bestehende Code ein:
errHandler1:

 If Not useShape Then Exit Sub ' Diese Zeile einfügen !!!!! 
 
'entweder weiter die Fehler behandeln und ausgeben oder einfach nix weiter machen :) 
  On Error GoTo errHandler2 'Fehler abfangen 

Anzeige
AW: VBA Code mit Button ein und ausschalten
14.08.2019 11:57:09
Krogi
Danke für die schnelle Antwort.
Den den oberen Code konnte ich in das gleiche Modul einfügen.
Beim unteren Code bekomme ich die Fehlermeldung:
"Fehler beim Kompilieren: Mehrfachdeklaration im aktuellen Gültigkeitsbereich"
AW: VBA Code mit Button ein und ausschalten
14.08.2019 12:04:28
peterk
Hallo
Nur die Zeile die ich markiert habe darfst Du einfügen, den Rest habe ich nur mitkopiert damit Du die genaue Stelle siehst!
Anzeige
AW: VBA Code mit Button ein und ausschalten
14.08.2019 12:09:10
Krogi
Lesen muss man können...
Vielen Dank für deine Hilfe - funktioniert perfekt!! :-)
;
Anzeige
Anzeige

Infobox / Tutorial

VBA Code mit Button ein- und ausschalten


Schritt-für-Schritt-Anleitung

Um einen VBA Code über einen Excel Button ein- und auszuschalten, folge diesen Schritten:

  1. Öffne die Excel-Datei, in der du den VBA Code implementieren möchtest.

  2. Aktiviere die Entwicklertools: Gehe zu "Datei" > "Optionen" > "Menüband anpassen" und aktiviere die Entwicklertools.

  3. Füge einen Button hinzu:

    • Gehe zu den Entwicklertools und klicke auf "Einfügen".
    • Wähle einen "Button (Formularsteuerung)" aus und ziehe ihn in dein Arbeitsblatt.
  4. VBA Code hinzufügen:

    • Klicke mit der rechten Maustaste auf den Button und wähle "Makro zuweisen".
    • Klicke auf "Neues Makro", um den VBA-Editor zu öffnen.
  5. Füge den folgenden Code in das Modul ein:

    Public useShape As Boolean
    
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
        useShape = Not useShape
        Cancel = True
        Call Worksheet_SelectionChange(Target)
    End Sub
  6. Ergänze den existierenden Code:

    • Füge diese Zeile in deinen bestehenden Code ein, um die Funktion zu aktivieren:
    If Not useShape Then Exit Sub ' Diese Zeile einfügen !!!!! 
  7. Teste den Button: Klicke auf den Button, um die Funktion ein- und auszuschalten.


Häufige Fehler und Lösungen

  • Fehler beim Kompilieren: Mehrfachdeklaration im aktuellen Gültigkeitsbereich:

    • Achte darauf, dass die Variable useShape nur einmal deklariert wird. Wenn du sie bereits in einem anderen Modul deklariert hast, entferne die Deklaration oder passe den Namen an.
  • Button funktioniert nicht:

    • Stelle sicher, dass der Button korrekt mit dem Makro verknüpft ist. Überprüfe die Zuweisung, indem du mit der rechten Maustaste auf den Button klickst und "Makro zuweisen" wählst.

Alternative Methoden

Eine alternative Methode zur Verwendung eines Excel Buttons ist die Implementierung einer Doppelklick-Funktion. Hierbei wird der Code automatisch ausgeführt, wenn du auf eine Zelle doppelklickst. Dies kann besonders nützlich sein, wenn du keinen Button verwenden möchtest.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du den VBA Code für eine Schaltfläche (Button) nutzen kannst. Der folgende Code erzeugt ein Fadenkreuz in einer großen Tabelle:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    'Füge hier deinen Code für das Fadenkreuz ein
End Sub

In diesem Beispiel wird das Fadenkreuz gezeichnet, wenn der Button gedrückt wird. Es kann auch eine Variable verwendet werden, um das Fadenkreuz ein- oder auszuschalten.


Tipps für Profis

  • Verwende eine UserForm: Wenn du häufig mit VBA arbeitest, könnte eine UserForm für die Eingabe von Daten nützlich sein. Du kannst damit komplexere Benutzeroberflächen erstellen.
  • VBA Codes Übersicht nutzen: Halte eine Übersicht deiner VBA Codes, um die Wartung und Anpassung zu erleichtern.
  • Code kommentieren: Dokumentiere deinen Code gründlich, um später leichter Änderungen vornehmen zu können.

FAQ: Häufige Fragen

1. Wie kann ich den Button anpassen?
Du kannst die Größe, Farbe und den Text des Buttons anpassen, indem du mit der rechten Maustaste auf den Button klickst und "Formatieren" wählst.

2. Was ist, wenn ich den Code in einer anderen Excel-Version nutzen möchte?
Die meisten VBA Codes sind in den neueren Excel-Versionen kompatibel, aber es ist immer ratsam, die Versionen zu überprüfen und gegebenenfalls anzupassen.

3. Kann ich mehrere Buttons mit unterschiedlichen Funktionen erstellen?
Ja, du kannst mehrere Buttons erstellen und jedem Button ein anderes Makro zuweisen, um verschiedene Funktionen auszuführen.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige