Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zwei VBA Codes zusammenführen

Zwei VBA Codes zusammenführen
16.08.2016 16:25:34
Marcel
Hallo zusammen,
ich habe mir aus dem Forum zwei VBA Codes zusammengesucht und möchte nun, die beiden miteinander verbinden, dass beide Aktionen ausgeführt werden. Könnt ihr mir dabei bitte helfen?
1. Wenn eine Änderung in einer Zelle vorgenommen wird, soll diese rot eingefärbt werden
Public AlterWert As Variant
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
AlterWert = Target
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target  AlterWert Then Target.Interior.ColorIndex = 3
End Sub
2. Wenn eine Änderung in einer Zelle in einer Zeile vorgenommen wird schreibe das aktuelle Datum in Spalte D
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Const Datum_Spalte = 4
Dim ber As Range, z As Range
'Wenn Spalte D manuell geändert wird, "Undo"
If Not Intersect(Target, Columns(Datum_Spalte)) Is Nothing Then
Beep
With Application
.EnableEvents = False
.Undo
.EnableEvents = True
End With
Exit Sub
End If
Set ber = Intersect(Target, Me.UsedRange, Range("A2:C65536"))
If Not ber Is Nothing Then
Application.EnableEvents = False
For Each z In ber
Cells(z.Row, Datum_Spalte) = Date
Next z
Application.EnableEvents = True
End If
Danke und viele Grüße
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Zwei VBA Codes zusammenführen
16.08.2016 16:35:08
ChrisL
Hi Marcel
Public AlterWert As Variant
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
AlterWert = Target
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
Const Datum_Spalte = 4
Dim ber As Range, z As Range
If Target  AlterWert Then Target.Interior.ColorIndex = 3
'Wenn Spalte D manuell geändert wird, "Undo"
If Not Intersect(Target, Columns(Datum_Spalte)) Is Nothing Then
Beep
With Application
.EnableEvents = False
.Undo
.EnableEvents = True
End With
Exit Sub
End If
Set ber = Intersect(Target, Me.UsedRange, Range("A2:C65536"))
If Not ber Is Nothing Then
Application.EnableEvents = False
For Each z In ber
Cells(z.Row, Datum_Spalte) = Date
Next z
Application.EnableEvents = True
End If
End Sub

cu
Chris
Anzeige
AW: Zwei VBA Codes zusammenführen
16.08.2016 16:55:11
Marcel
Hi Chris,
danke, aber ich habe leider Null VBA Kenntnisse. Kannst Du mir bitte erklären, wie ich was und wo einfügen muss? :/
Danke und Gruß
AW: Zwei VBA Codes zusammenführen
16.08.2016 17:29:24
ChrisL
Hi Marcel
In das Modul der betreffenden Tabelle. Alt+F11, links Doppelklick auf Tabelle, Code einfügen.
cu
Chris
AW: Zwei VBA Codes zusammenführen
17.08.2016 09:02:20
Marcel
Es funktioniert! :)
Vielen Dank für die Hilfe!!!
Anzeige
AW: Zwei VBA Codes zusammenführen
17.08.2016 10:08:49
Marcel
Hi Chris,
funktioniert fast...
Ändere ich mehrere Werte über kopieren gleichzeitig bringt er einen Fehler und bezieht diesen auf:
If Target AlterWert Then
Kannst Du nochmal helfen?
Außerdem: Ändere ich Werte über die Funktion "Suchen & Ersetzen" macht er die Zelle nicht farbig und schreibt kein Datum dahinter. Geht das, dass auch hier die Änderungen nachverfolgbar sind?
Danke und Grüße
Anzeige
AW: Zwei VBA Codes zusammenführen
17.08.2016 11:11:53
Marcel
Fehler: Laufzeitfehler "13" Typen unverträglich
AW: Zwei VBA Codes zusammenführen
17.08.2016 12:40:40
ChrisL
Hi Marcel
Eine "gute" Lösung habe ich dir spontan auch nicht, da müsste man vermutlich die ganze Tabelle spiegeln und abgleichen. Die Kopiererei stört dann vermutlich die Arbeit (Performance), weil immer alle Daten doppelt geführt werden.
Quick & Dirty, am Anfang vom Code folgende Zeile einfügen:
On Error Resume Next
Hat zur Folge, dass der Fehler unterdrückt wird, aber einfärben tut sich dann auch nichts.
Suchen&Ersetzen fällt in die gleiche Kategorie. Wenn die zu bearbeitende Zelle vorher nicht einzeln selektiert wurde, funktioniert das Makro nicht.
cu
Chris
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zwei VBA Codes zusammenführen in Excel


Schritt-für-Schritt-Anleitung

Um die beiden VBA Codes in Excel zusammenzuführen, folge diesen Schritten:

  1. Öffne das Excel-Dokument, in dem du die VBA Codes verwenden möchtest.
  2. Drücke Alt + F11, um den VBA-Editor zu öffnen.
  3. Doppelklicke auf die entsprechende Tabelle im Projekt-Explorer, in der du die Codes hinzufügen möchtest.
  4. Kopiere den Code von Marcel und den ergänzenden Code von ChrisL und füge sie in das Codefenster ein. Der kombinierte Code sieht so aus:
Public AlterWert As Variant

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    AlterWert = Target
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    Const Datum_Spalte = 4
    Dim ber As Range, z As Range

    If Target <> AlterWert Then Target.Interior.ColorIndex = 3

    'Wenn Spalte D manuell geändert wird, "Undo"
    If Not Intersect(Target, Columns(Datum_Spalte)) Is Nothing Then
        Beep
        With Application
            .EnableEvents = False
            .Undo
            .EnableEvents = True
        End With
        Exit Sub
    End If

    Set ber = Intersect(Target, Me.UsedRange, Range("A2:C65536"))
    If Not ber Is Nothing Then
        Application.EnableEvents = False
        For Each z In ber
            Cells(z.Row, Datum_Spalte) = Date
        Next z
        Application.EnableEvents = True
    End If
End Sub
  1. Schließe den VBA-Editor und teste die Funktionalität in Excel.

Häufige Fehler und Lösungen

  • Laufzeitfehler "13" Typen unverträglich: Dieser Fehler kann auftreten, wenn du mehrere Zellen gleichzeitig änderst. Um dies zu umgehen, füge On Error Resume Next am Anfang des Worksheet_Change-Events ein.

  • Kein Färben bei "Suchen & Ersetzen": Das Makro funktioniert nur, wenn die Zelle vorher selektiert wurde. Eine Lösung dafür erfordert eine Anpassung des Codes, um auch diese Änderungen zu berücksichtigen.


Alternative Methoden

Falls du die VBA Codes nicht zusammenführen möchtest, kannst du auch die Excel-Funktionen nutzen, um ähnliche Ergebnisse zu erzielen. Verwende bedingte Formatierung, um Zellen hervorzuheben, und benutze die Formel =HEUTE() in der Datumsspalte.


Praktische Beispiele

Hier sind einige Praxisbeispiele für die Nutzung der zusammengeführten VBA Codes:

  1. Zelle rot einfärben: Wenn du in einen bestimmten Bereich der Tabelle einen Wert änderst, wird die Zelle automatisch rot eingefärbt.
  2. Datum in Spalte D: Bei jeder Änderung in den Spalten A bis C wird das aktuelle Datum in die entsprechende Zeile in Spalte D geschrieben.

Tipps für Profis

  • Nutze eine VBA Codes Übersicht, um deine Codes besser zu organisieren.
  • Teste deine Excel VBA Codes gründlich, bevor du sie in einer produktiven Umgebung anwendest.
  • Dokumentiere deine VBA Codes in Excel, um sie später leichter wiederfinden und anpassen zu können.

FAQ: Häufige Fragen

1. Wie kann ich die VBA Codes in Excel anpassen?
Du kannst den Code im VBA-Editor öffnen und die gewünschten Änderungen direkt im Code vornehmen.

2. Was kann ich tun, wenn der Code nicht funktioniert?
Überprüfe, ob die richtigen Zellen ausgewählt sind und stelle sicher, dass keine anderen Makros Konflikte verursachen.

3. Kann ich mehrere VBA Codes gleichzeitig nutzen?
Ja, du kannst mehrere VBA Codes in Excel verwenden. Achte jedoch darauf, dass sie nicht miteinander in Konflikt stehen.

4. Was bedeutet "EnableEvents"?
EnableEvents ist eine Eigenschaft, die steuert, ob die Ereignisse in Excel aktiviert sind. Wenn du sie auf False setzt, wird verhindert, dass andere Ereignisse während der Ausführung des Codes ausgelöst werden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige