2.4k Aufrufe
Gefragt in Tabellenkalkulation von
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

8 Antworten

0 Punkte
Beantwortet von coros Experte (4k Punkte)
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
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von
hallo coros,

hoffe du findest einen Weg. :-)

Danke
0 Punkte
Beantwortet von coros Experte (4k Punkte)
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
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von
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
0 Punkte
Beantwortet von coros Experte (4k Punkte)
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
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von
danke erst mal..
ich schau mal ob ich das hinbekomme.. wenn es klappt schick ich dir den link
...