Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1412to1416
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
Inhaltsverzeichnis

VBA Identische in Spalte markieren

VBA Identische in Spalte markieren
15.03.2015 09:40:30
WalterK
Schönen Sonntag,
den folgenden Code habe ich im Internet gefunden. Er markiert in Spalte B alle Namen, die mit dem Namen in der aktiven Zelle übereinstimmen.
Jetzt wollte ich mit Private Sub Worksheet_SelectionChange(ByVal Target As Range) erreichen, dass der Code automatisch startet wenn ich im Bereich B6:B(bis Ende) in eine Zelle klicke. Und das bringe ich nicht zum Laufen.
Hier ist der Code und eine Beispieltabelle:
Option Explicit
Sub IdentischeMarkieren()
Dim sBegriff As String
Dim gzelle As Range
Dim LzB As Long
LzB = Application.Max(6, Cells(Rows.Count, 2).End(xlUp).Row)
ActiveSheet.Range("B6:B" & LzB).Interior.ColorIndex = xlNone
If ActiveCell.Column  2 Or ActiveCell.Value = "" Then
MsgBox "Wähle zuerst einen Werte aus Spalte B.", vbCritical, "FEHLER"
Exit Sub
Else: sBegriff = ActiveCell.Value
End If
Set gzelle = ActiveSheet.Columns("B").Find(What:=sBegriff, LookIn:=xlValues, _
LookAt:=xlWhole, SearchDirection:=xlNext, MatchCase:=False)
gzelle.Interior.ColorIndex = 37
If Not gzelle Is Nothing Then
gzelle.Activate
Do                                                                   ' weitersuchen
Columns("B").FindNext(After:=ActiveCell).Activate
If ActiveCell.Row = gzelle.Row And ActiveCell.Column = gzelle.Column Then _
Exit Do     ' dann ist er wieder beim ersten Fund
ActiveCell.Offset(0, 0).Interior.ColorIndex = 37
Loop
Set gzelle = Nothing
End If
End Sub

https://www.herber.de/bbs/user/96373.xlsm
Besten Dank im voraus, Servus Walter

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Quick and dirty
15.03.2015 10:31:04
Gerd
Servus Walter!
Setze bitte dieses Selection_Change ins Modul der Tabelle u. lasse deine bisherige Prozedur IdentischeMarkieren drin.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Rng As Range
Set Rng = Range("B6:B" & Application.Max(6, Cells(Rows.Count, 2).End(xlUp).Row))
If Intersect(Rng, Target) Is Nothing Then Exit Sub
If Target.Count > 1 Or Target.Value = "" Then Exit Sub
Application.EnableEvents = False
Call IdentischeMarkieren
Application.EnableEvents = True
End Sub
Gruß Gerd

Worksheet_SelectionChange
15.03.2015 11:07:16
Erich
Hi Walter,
probier mal:

Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim LzB As Long, lngF As Long, lngZ As Long
If Target.Count > 1 Then Exit Sub
LzB = Application.Max(6, Cells(Rows.Count, 2).End(xlUp).Row)
If Target.Column  2 Or Target.Row  LzB Or Target.Value = "" Then
MsgBox "Wähle zuerst einen Wert aus Spalte B.", vbCritical, "FEHLER"
Exit Sub
End If
Application.EnableEvents = False
Range("B6:B" & LzB).Interior.ColorIndex = xlNone
lngZ = Columns(2).Find(What:="" & Target.Value, LookIn:=xlValues, _
LookAt:=xlWhole, SearchDirection:=xlNext, MatchCase:=False).Row
lngF = lngZ
Do
Cells(lngZ, 2).Interior.ColorIndex = 37
lngZ = Columns(2).FindNext(After:=Cells(lngZ, 2)).Row        ' weitersuchen
If lngZ = lngF Then Exit Do           ' dann ist er wieder beim ersten Fund
Loop
Application.EnableEvents = True
End Sub
@Gerd:
If Target.Count > 1 Or Target.Value = "" Then Exit Sub
ist nicht wirklich sinnvoll. Wenn Target.Count > 1 ist, führt Target.Value zum Fehlerabbruch. :-(
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
noch eine Variante
15.03.2015 11:18:01
Erich
Hi Walter,
das reicht wohl auch schon:

Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim LzB As Long, lngF As Long, lngZ As Long
If Target.Count > 1 Then Exit Sub
LzB = Application.Max(6, Cells(Rows.Count, 2).End(xlUp).Row)
If Target.Column  2 Or Target.Row  LzB Or Target.Value = "" Then
MsgBox "Wähle zuerst einen Wert aus Spalte B.", vbCritical, "FEHLER"
Exit Sub
End If
Range("B6:B" & LzB).Interior.ColorIndex = xlNone
lngZ = Columns(2).Find(What:="" & Target.Value, LookIn:=xlValues, _
LookAt:=xlWhole, SearchDirection:=xlNext, MatchCase:=False).Row
lngF = lngZ
Do
Cells(lngZ, 2).Interior.ColorIndex = 37
lngZ = Columns(2).FindNext(After:=Cells(lngZ, 2)).Row        ' weitersuchen
Loop While lngZ  lngF                 ' solange 1. Fundstelle nicht erreicht
End Sub
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich

Anzeige
AW: VBA Identische in Spalte markieren
15.03.2015 11:31:32
Gerd
Hallo Erich,
... ist richtig.
Servus Walter, dann halt so:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Rng As Range
Set Rng = Range("B6:B" & Application.Max(6, Cells(Rows.Count, 2).End(xlUp).Row))
If Intersect(Rng, Target) Is Nothing Then Exit Sub
If Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
Application.EnableEvents = False
Call IdentischeMarkieren
Application.EnableEvents = True
End Sub
Gruß Gerd

AW: VBA Identische in Spalte markieren
15.03.2015 14:06:16
WalterK
Hallo Gerd, Hallo Erich,
besten Dank für die Hilfe. Funktioniert wieder mal ausgezeichnet.
Schönen Sonntag noch und Servus, Walter

Anzeige
Deine Variante mag 'quick' sein, aber beileibe ...
15.03.2015 19:59:24
Luc:-?
nicht dirty, Gerd,
da so etwas die Norm sein sollte, weil es die EreignisProzedur nicht einseitig belastet. So kann sie auch noch für Anderes benutzt wdn, ohne dass man irgendwann die Übersicht verliert.
Gruß, Luc :-?
Besser informiert mit …

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige