VBA start bei Änderung
Hey Ihr,
hab mir ein VBA geschrieben und komme aber nicht weiter.
Das Makro ist ein der Tabelleblatt2.
Das Makro startet automatisch bei Änderung des Zelleninhaltes.
Aber stoppt, wenn ich einen Befehl im Tabellenblatt1 ausführenlassen will.
ist das überhaupt wenn ja wie?
denn bei mir kommt immer die Fehlermeldung.
Danke
Antwort schreiben
Antwort 1 von coros vom 16.09.2021, 15:09 Options
Hallo,
wie sollen wir Dir helfenden Fehler zu finden, wenn Du nicht Dein bereits bestehendes Makro hier postest?
Bitte zeige uns Dein bereits bestehendes Makro.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 2 von mariamaria vom 16.09.2021, 15:12 Options
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngBereich As Range
Dim lngLetzteZeile As Long
Dim suchbegriff1, suchbegriff2 As Variant
Dim rngMeine1Zelle, rngMeine2Zelle As Range
Application.ScreenUpdating = False
Application.DisplayAlerts = False
lngLetzteZeile = Range("B" & Range("B:B").Rows.Count).End(xlUp).Row
Set rngBereich = Range("A2:A" & lngLetzteZeile)
If Not Intersect(Target, rngBereich) Is Nothing Then
Name = ActiveSheet.Name
Sheets("Übersicht").Select
lastRM = Sheets("Übersicht").Range(Cells(17, 9999), Cells(17, 9999)).End(xlToLeft).Column
Sheets("Übersicht").Range(Cells(17, 1), Cells(10000, 10000)).Interior.Color = vbWhite
Sheets(Name).Select
last = Sheets(Name).Range(Cells(99999, 2), Cells(99999, 2)).End(xlUp).Row
For i = 2 To last Step 1
If Sheets(Name).Cells(i, 1) = "RELEVANT" Then
suchbegriff1 = Sheets(Name).Cells(i, 4).Value
suchbegriff2 = Sheets(Name).Cells(i, 5).Value
Sheets("Übersicht").Select
For Each rngMeine1Zelle In Sheets("Übersicht").Range(Cells(15, 1), Cells(15, lastRM)).Cells
If suchbegriff1 = rngMeine1Zelle.Value Then
zeile = rngMeine1Zelle.Row
spalte = rngMeine1Zelle.Column
unten = Sheets("Übersicht").Range(Cells(99999, spalte), Cells(99999, spalte)).End(xlUp).Row
For Each rngMeine2Zelle In Sheets("Übersicht").Range(Cells(zeile + 2, spalte), Cells(unten, spalte)).Cells
If suchbegriff2 = rngMeine2Zelle.Value Then
rngMeine2Zelle.Offset(0, 0).Interior.Color = vbRed
End If
Next
End If
Next
End If
Next
End If
Set rngBereich = Nothing
End Sub
Antwort 3 von mariamaria vom 16.09.2021, 15:30 Options
kurz zur info:
habe 5 unterschiedliche tabellen
und eine Übersichtstabelle
wenn in einer der 5 Tabellen in der Spalte A zu dem jeweiligen Datensatz ein "Relevant" hinzugefügt wird, dann möchte ich das in der Übersicht Rot gekennzeichnet haben.
Dafür soll nach zwei begriffen gesucht werden.
Der erste ist die Gruppe und der andere Begriff ist das Produkt.
Danke für die Hilfe
Antwort 4 von mariamaria vom 16.09.2021, 16:34 Options
hallo coros,
hoffe du findest einen Weg. :-)
Danke
Antwort 5 von coros vom 16.09.2021, 16:57 Options
Hallo mariamaria,
das ist mir etwas zu kompliziert zu verstehen. Da ich auch keine Lust habe, mir eine Beispieldatei zu erstellen, die annähernd so ist wie Deine die Frage: Kannst Du mal eine Beispieldatei z.B. bei
http://rapidshare.com hochladen und den Link, den Du erhälst hier dann posten?
Wann kommt bei Dir die Fehlermeldung? Welche Zeile im VBA-Code wird gelb markiert, wenn Du in der Dialogbox des Laufzeitfehlers auf den Button "Debuggen" klickst?
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 6 von mariamaria vom 16.09.2021, 17:12 Options
Der Code wie folgt funktioniert als Makro.
Aber wenn ich es in einen Tabellenblatt reinschreibe, dass es automatisch losgehen soll, wenn ich in der Spalte A was ändere, startet es. Doch bringt bei der Zeile ab, die mit "lastRM" anfängt.
Meine Vermutung ist, dass es bei dem Wechsel von Tabellenblätter Probleme ab.
Kann das sein??
Sub Markieren()
Dim suchbegriff1, suchbegriff2 As Variant
Dim rngMeine1Zelle, rngMeine2Zelle As Range
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Name = ActiveSheet.Name
Main = Sheets("Übersicht").Name
Sheets(Main).Select
lastRM = Sheets(Main).Range(Cells(17, 9999), Cells(17, 9999)).End(xlToLeft).Column
Sheets(Main).Range(Cells(17, 1), Cells(10000, lastRM)).Interior.Color = vbWhite
Sheets(Name).Select
last = Sheets(Name).Range(Cells(99999, 2), Cells(99999, 2)).End(xlUp).Row
For i = 2 To last Step 1
If Sheets(Name).Cells(i, 1) = "RELEVANT" Then
suchbegriff1 = Sheets(Name).Cells(i, 4).Value
suchbegriff2 = Sheets(Name).Cells(i, 5).Value
Sheets(Main).Select
For Each rngMeine1Zelle In Sheets(Main).Range(Cells(15, 1), Cells(15, lastRM)).Cells
If suchbegriff1 = rngMeine1Zelle.Value Then
zeile = rngMeine1Zelle.Row
spalte = rngMeine1Zelle.Column
unten = Sheets(Main).Range(Cells(99999, spalte), Cells(99999, spalte)).End(xlUp).Row
For Each rngMeine2Zelle In Sheets(Main).Range(Cells(zeile + 2, spalte), Cells(unten, spalte)).Cells
If suchbegriff2 = rngMeine2Zelle.Value Then
rngMeine2Zelle.Offset(0, 0).Interior.Color = vbRed
End If
Next
End If
Next
End If
Next
End Sub
Antwort 7 von coros vom 16.09.2021, 17:15 Options
Hallo,
dass muss man testen. Da ich aber keine Lust habe mir eine Datei zu erstellen, die Du bereits fertig vor Dir hast, hatte ich Dich gebeten eine Beispieldatei hochzuladen.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 8 von mariamaria vom 16.09.2021, 17:18 Options
danke erst mal..
ich schau mal ob ich das hinbekomme.. wenn es klappt schick ich dir den link