Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1912to1916
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
VBA Funktion mit Button EIN/AUs schalten
11.01.2023 15:16:24
oliver
Hallo zusammen,
ich bin neu und habe von VBA fast keine Ahnung und hoffe das mir hier jemand helfen kann.
Ich habe eine VBA Code in meine exceltabelle kopiert mit der ich beim anklicken einer Zelle die ganze Zeile markiere ohne die Formatierung zu überschreiben. Da ich diese Funktion aber nicht jedes mal benötige, möchte ich diese gerne mit einem Button ein und ausschalten können. Kann mir jemand hierbei bei helfen und zeigen wie das geht?
hier der Code
Dim r As Integer, c As Integer, rng As Range

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Farbe As Long
Farbe = ActiveWorkbook.Colors(14) '=Colorindex 14 oder z.B. Farbe = 123456
'Ausführung in den Hintergrund schalten
Application.ScreenUpdating = False
Application.EnableEvents = False
'Hilfssheet zum Speichern des Zeilenformats anlegen
On Error Resume Next
If Sheets("Formatspeicher").Name = "" Then
Set fsp = Sheets.Add(After:=Sheets(Sheets.Count))
fsp.Name = "Formatspeicher"
Me.Select
fsp.Visible = False
Else: Set fsp = Sheets("Formatspeicher"): End If
'prüfen ob Hintergrundfarbe absichtlich geändert wurde und übernehmen dieser
If Not rng Is Nothing Then
If rng.Cells(1).Interior.Color  Farbe Then
With fsp.Range(fsp.Cells(1, rng.Column), fsp.Cells(rng.Rows.Count, rng.Column _
+ rng.Columns.Count - 1)).Interior 'geänderte Farbe in die Kopie übernehmen
If rng.Cells(1).Interior.ColorIndex = xlNone Then .ColorIndex = xlNone _
Else .Color = rng.Cells(1).Interior.Color
End With
End If
End If
If r  Target.Row Then 'Wenn Zeile ungleich vorheriger Selection
If r > 0 Then
fsp.Rows(1 & ":" & c).Copy 'Holen aus Formatspeicher
Rows(r & ":" & r + c - 1).PasteSpecial xlPasteFormats 'Format wiederherstellen
Target.Select
End If
r = Target.Row: c = Target.Rows.Count 'Merken welche Zeile aktuell ist
Rows(r & ":" & r + c - 1).Copy 'Zeilenformat kopieren und
fsp.Rows(1 & ":" & c).PasteSpecial xlPasteFormats 'im Formatspeicher ablegen
Rows(r & ":" & r + c - 1).Interior.Color = Farbe 'Zeilenhintergrund einheitlich
End If
Set rng = Target
Application.CutCopyMode = False
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Vorab vielen Dank
Gruß Olli

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

Betreff
Datum
Anwender
Anzeige
AW: VBA Funktion mit Button EIN/AUs schalten
11.01.2023 15:25:18
Rudi
Hallo,
füge einen ToggleButton (Umschaltfläche) in dein Blatt ein.
Code:

Private Sub ToggleButton1_Click()
With ToggleButton1
If .Value Then
.Caption = "An"
Else
.Caption = "Aus"
End If
End With
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If ToggleButton1 Then
'dein Code
End If
End Sub
Gruß
Rudi
AW: VBA Funktion mit Button EIN/AUs schalten
11.01.2023 15:43:06
Oliver
Hi,
danke für die schnelle Antwort,
leider funktioniert der code nicht richtig. ich kann nicht ausschalten und bekommen eine Fehlermeldung.
bei mir geht das.
11.01.2023 15:52:55
Rudi
wahrscheinlich, weil ich alles richtig mache ;-)
Gruß
Rudi
Anzeige
AW: VBA Funktion mit Button EIN/AUs schalten
11.01.2023 15:52:37
Oliver
Hi,
danke für die schnelle Antwort,
leider funktioniert der code nicht richtig. ich kann nicht ausschalten und bekommen eine Fehlermeldung.
AW: VBA Funktion mit Button EIN/AUs schalten
11.01.2023 15:59:53
Daniel
Hi
Bei keine Ahnung von VBA sollte man möglichst wenig VBA benutzen
Lösche den Code des Makros und ersetze ihn durch diesen einen Befehl:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Range("A1").Value = Target.Row
End Sub
Markiere dann die Zellen und füge eine Bedingte Formatierung mit dieser Regel ein:

=Zeile()=$A$1
Fertig ist die Zeilenmarkierung, die vorhandene Formate nicht löscht.
Wenns Schaltbar sein soll, erweitere die Formel so:

=Und($B$1="x";Zeile()=$A$1)
Dann kannst du über das x in B1 steuern, ob die Markierung angezeigt wird oder nicht.
Gruß Daniel
Anzeige

306 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige