Registriert seit: 29.09.2016
Version(en): 2007/2010/ 365
28.09.2017, 12:13
(Dieser Beitrag wurde zuletzt bearbeitet: 28.09.2017, 12:13 von DietmarD.)
Hallo zusammen,
ich bräuchte mal Hilfe!
Ich möchte in einem Tabellenblatt zwei Spalten via VBA vergleichen.
In Spalte E ab Zeile 5 bis 60 steht ein Wert, der über eine Formel Sverweis geholt wird. (Passend zur Fertigprodukt Materialnummer)
In Spalte J ab Zeile 5 bis 60 steht ebenfalls ein Wert, der über den Sverweis geholt wird. (Passend zur Rohprodukt Materialnummer)
Beide Werte z.B. E5 und J5 oder E25 und J25 müssen übereinstimmen, wenn nicht soll der Wert in Spalte J rot werden.
Ich hatte dies schon über die bedingte Formatierung hinbekommen, nur werden in dieser Tabelle immer wieder Zeilen gelöscht und hinzugefügt und die Tabelle bläht sich dann durch die Vervielfältigung der bedingten Formatierung sehr auf und wird immer größer, deshalb mein Wunsch dies über VBA zu realisieren.
Danke für Eure Hilfe im Voraus!
Gruß
Dietmar
Damit das Mögliche entsteht, muß immer wieder das Unmögliche versucht werden.
Registriert seit: 11.04.2014
Version(en): Office 365
Hallo,
Zitat:nur werden in dieser Tabelle immer wieder Zeilen gelöscht und hinzugefügt
dann solltet ihr mal eure Arbeitsweise überdenken.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter,
der Misserfolg ist ein Waisenkind
Richard Cobden
Registriert seit: 29.09.2016
Version(en): 2007/2010/ 365
Hallo Klaus-Dieter,
schön von dir zu hören und schade das es dein Forum nicht mehr gibt, das war wirklich klasse.
Ja du hast recht, aber mit dieser Tabelle arbeitet jemand, der keine Ahnung von Excel hat, also noch weniger als ich :22:
Die Tabelle wird als Arbeitsplan in der AV genutzt was bedeutet dass in dieser Tabelle Aufträge stehen die abgearbeitet werden, am anderen morgen löscht der Kollege die Zeilen mit den abgearbeiteten Aufträgen, zieht die Formeln nach unten und schreib neue Aufträge darunter.
Dabei wie schon erwähnt bläht sich die bedingte Formatierung so auf, dass die Datei immer größer wird und nicht mehr Per Mail gesendet werden kann.
Deshalb hätte ich hier mit eurer Hilfe, gerne eine VBA-Lösung.
Gruß
Dietmar
Damit das Mögliche entsteht, muß immer wieder das Unmögliche versucht werden.
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Dietmar,
Sub aaa()
Dim rngJ As Range, rngZ As Range
For Each rngZ In Range("J5:J60")
If rngZ.Value <> rngZ.Offset(, -5).Value Then
rngZ.Font.ColorIndex = 3
Else
rngZ.Font.ColorIndex = -4105
End If
Next rngZ
End Sub
Gruß Uwe
Registriert seit: 29.09.2016
Version(en): 2007/2010/ 365
Hallo Uwe,
ich danke dir wieder mal für deine schnelle Hilfe.
Ich habe den Code auf einen Comand Button gelegt und getestet funktioniert einwandfrei.
Nun wäre es ja gut, wenn er ohne Button sondern automatisch durchlaufen würde.
Ich habe bereits einen Code, der im Change Ereignis einige Materialnummern abgleicht und hier müsste ich nun deinen Code unterbringen könntest du mir hierbei nochmals helfen?
Vielen Dank!
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bereich As Range
Dim Zelle As Range
Dim intIndex As Integer
Dim rng As Range
Set Bereich = Range("B5:z60")
Set rng = Intersect(Target, Range("D5:D60"))
If rng Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each Zelle In rng
Select Case Zelle.Value
' falls es unterschiedlicher Text wäre
Case "2073642": intIndex = 6: Zelle.Offset(0, 19).Value = "links rechts Markierung"
Case "2073644": intIndex = 6: Zelle.Offset(0, 19).Value = "links rechts Markierung"
Case "2074487": intIndex = 6: Zelle.Offset(0, 19).Value = "links rechts Markierung"
Case "2073140": intIndex = 6: Zelle.Offset(0, 19).Value = "links rechts Markierung"
Case "2070577": intIndex = 6: Zelle.Offset(0, 19).Value = "links rechts Markierung, Metallseite markieren"
Case "2078317": intIndex = 6: Zelle.Offset(0, 19).Value = "Autoreflex nur Rohglas mit KZ48 verwenden"
Case "2078377": intIndex = 6: Zelle.Offset(0, 19).Value = "Autoreflex nur Rohglas mit KZ48 verwenden"
Case "2078531": intIndex = 6: Zelle.Offset(0, 19).Value = "Autoreflex nur Rohglas mit KZ48 verwenden"
Case "2078646": intIndex = 6: Zelle.Offset(0, 19).Value = "Autoreflex nur Rohglas mit KZ48 verwenden"
Case "2072507": intIndex = 6: Zelle.Offset(0, 19).Value = "Autoreflex nur Rohglas mit KZ48 verwenden"
Case "2072506": intIndex = 6: Zelle.Offset(0, 19).Value = "Autoreflex nur Rohglas mit KZ48 verwenden"
Case "2069353": intIndex = 6: Zelle.Offset(0, 19).Value = "Autoreflex nur Rohglas mit KZ48 verwenden"
Case Else: intIndex = -4142: 'Zelle.Offset(0, 19).Value = "" ' Spalte W leeren
End Select
If Zelle.Value <> "" Then
Zelle.Offset(0, 21).Value = "SM3"
Else
Zelle.Offset(0, 21).Value = "" ' Spalte Y leeren
End If
'Zelle.Offset(0, 19).Value = "Dein Text für Alle" 'hier bei immer gleichem Text
Bereich.Rows(Zelle.Row - 4).Interior.ColorIndex = intIndex
Next
Application.EnableEvents = True
End Sub
Gruß
Dietmar
Damit das Mögliche entsteht, muß immer wieder das Unmögliche versucht werden.
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo Dietmar,
Du schriebst von SVERWEIS-Formeln. Demnach müsste der Code in das Calculate-Ereignis.
Gruß Uwe
Registriert seit: 29.09.2016
Version(en): 2007/2010/ 365
Hallo Uwe,
ich versuche das mal.
Vielen Dank für deine Hilfe
Gruß
Dietmar
Damit das Mögliche entsteht, muß immer wieder das Unmögliche versucht werden.
Registriert seit: 29.09.2016
Version(en): 2007/2010/ 365
Hallo Uwe,
nochmals vielen Dank, klappt wie gewünscht. :100:
Gilt nun als erledigt
Gruß
Dietmar
Damit das Mögliche entsteht, muß immer wieder das Unmögliche versucht werden.