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

Zelle auf Übereinstimmung prüfen

Zelle auf Übereinstimmung prüfen
09.06.2017 07:44:08
Sigi
Hallo,
ich möchte nach verlassen einer Zelle prüfen lassen ob der eingebene Wert in einer Liste vorhanden ist.
Wenn nicht dann soll eine UF erscheinen. Wenn der Wert vorhanden ist, dann
sollen die Werte aus den Nebenzellen übertragen werden.
Leider erscheint die UF immer auch wenn der Wert vorhanden ist.
Danke!
Gruß
Sigi
https://www.herber.de/bbs/user/114145.xlsm 'Code auskommentiert
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim wks As Worksheet
Dim ii&, loEnde%
Dim iRow&
iRow = 2
Set wks = Sheets("Buch")
Select Case Target.Column
Case 7, 20, 33, 46, 59, 72, 85, 98, 111, 124, 137, 150
If Len(ActiveCell.Value) = 4 Then
Do Until IsEmpty(wks.Cells(iRow, 1))
If wks.Cells(iRow, 1).Value = ActiveCell.Value Then
GoTo Step1
Else
GoTo Step2
End If
Loop
End If
Step1:
With wks
For ii = 2 To .Cells(.Rows.Count, 8).End(xlUp).Row
If .Cells(ii, 8) = ActiveCell.Offset(0, -2).Value And .Cells(ii, 9) =  _
ActiveCell.Value * 1 Then
Exit For
GoTo Ende
Else
.Cells(ii + 1, 8) = ActiveCell.Offset(0, -2).Value
.Cells(ii + 1, 9) = ActiveCell.Value * 1
.Cells(ii + 1, 10).FormulaR1C1 = "=VLOOKUP(RC[-1],C[-9]:C[-8],2,0)"
loEnde = .Cells(Rows.Count, 8).End(xlUp).Row
.Range(.Cells(2, 8), .Cells(loEnde, 10)).Sort _
Key1:=.Range("H1"), Order1:=xlAscending, _
Header:=xlYes, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
GoTo Ende
End If
Next ii
End With
Step2:
UF1.Show
Ende:
End Select
Set wks = Nothing
End Sub

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zelle auf Übereinstimmung prüfen
09.06.2017 08:17:57
Sepp
Hallo Sigi,
ungetestet.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim wks As Worksheet
Dim loEnde As Long
Dim varRet As Variant



Set wks = Sheets("Buch")

With wks
  Select Case Target.Column
    Case 7, 20, 33, 46, 59, 72, 85, 98, 111, 124, 137, 150
      If Len(Target.Value) = 4 Then
        varRet = Application.Match(Target, .Columns(1), 0)
        If IsNumeric(varRet) Then
          If .Cells(varRet, 8) <> Target.Offset(0, -2) Or .Cells(varRet, 9) <> Target.Value * 1 Then
            .Cells(varRet, 8) = Target.Offset(0, -2).Value
            .Cells(varRet, 9) = Target.Value * 1
            .Cells(varRet, 10).FormulaR1C1 = "=VLOOKUP(RC[-1],C[-9]:C[-8],2,0)"
            loEnde = .Cells(Rows.Count, 8).End(xlUp).Row
            .Range(.Cells(2, 8), .Cells(loEnde, 10)).Sort _
              Key1:=.Range("H1"), Order1:=xlAscending, _
              Header:=xlYes, OrderCustom:=1, _
              MatchCase:=False, Orientation:=xlTopToBottom
          End If
        Else
          UF1.Show
        End If
      End If
    Case Else
  End Select
End With

Set wks = Nothing
End Sub

Gruß Sepp

Anzeige
AW: Zelle auf Übereinstimmung prüfen
09.06.2017 08:28:47
Sigi
Hallo Sepp,
danke erstmal für Deine Antwort.
Leider funktioniert es nicht so ganz.
Wenn ich in Spalte G einen Wert eingebe und in die Nachbarzeile springe passiert nichts.
Erst wenn ich die Zelle wieder aktiviere wird das Ereignis ausgelöst.
Gruß
Sigi
AW: Zelle auf Übereinstimmung prüfen
09.06.2017 16:55:00
Sepp
Hallo Sigi,
dann solltest du nicht das _SelectionChange-Ereignis verwenden, sondern das _Change-Ereignis!
Die Eingabe in G löst ja keine Änderung der Auswahl (SelectionChange) aus!
Gruß Sepp

Anzeige
AW: Zelle auf Übereinstimmung prüfen
09.06.2017 17:49:52
Sigi
Hallo Sepp,
werde Deinen Vorschlag umsetzen.
Komme aber erst morgen dazu, da ich unterwegs bin.
Danke!
Gruß
Sigi
AW: Zelle auf Übereinstimmung prüfen
09.06.2017 20:43:00
Sigi
Hallo Sepp,
mit _Change funktioniert es nicht.
Ich habe nun doch die _SelectionChange als Ereignis verwandt.
Was nicht richtig funktioniert ist das Suchen der Buchungsnummer.
Die Zahlen sind Portugiesisch ( Angola) formatiert, alle Nummern die kleiner 1000 sind werden nicht gefunden z.B. 0020.
Ich dachte ich mache schnell ein kleines Buchhaltungprogramm für mich und nun sitze ich schon 2 Wochen darüber. (haha)
Danke!
Gruß
Sigi
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If bFlag = False Then GoTo Aus
Select Case Target.Column
Case 7
Sp = 0
BankPruefSkr
Case 8
If ActiveCell.Offset(0, -4) = "A" Then Exit Sub
If Len(ActiveCell.Offset(0, -1)) = 4 Then bln = True
If bln = True Then
Sp = 8
BankPruefSkr
bln = False
End If
Case 9
If ActiveCell.Offset(0, -5) = "E" Then Exit Sub
If Len(ActiveCell.Offset(0, -2)) = 4 Then bln = True
If bln = True Then
Sp = 9
BankPruefSkr
bln = False
End If
End Select
Aus:
End Sub
Sub BankPruefSkr()
If bFlag = False Then GoTo Aus
Dim wks As Worksheet
Dim sBegriff As String
Dim var As Variant
If Sp = 8 Then
sBegriff = ActiveCell.Offset(0, -1).Value
ElseIf Sp = 9 Then
sBegriff = ActiveCell.Offset(0, -2).Value
Else
Sp = 0
sBegriff = ActiveCell.Offset(0, 0).Value
End If
Set wks = Sheets("Buch")
With wks
var = Application.Match(sBegriff, .Columns(1), 0)
If Not IsError(var) Then
BankEintragen
ElseIf IsError(var) Then
UF1.Show
End If
End With
Aus:
Set wks = Nothing
End Sub
Sub BankEintragen()
Dim wks As Worksheet
Dim y&, loEnde&
Dim sBegriff$, sZahl$
On Error GoTo Aus
Set wks = Sheets("Buch")
If Sp = 8 Then
sBegriff = ActiveCell.Offset(0, -3).Value
sZahl = ActiveCell.Offset(0, -1).Value
Else
sBegriff = ActiveCell.Offset(0, -4).Value
sZahl = ActiveCell.Offset(0, -2).Value
End If
With wks
For y = 2 To .Cells(Rows.Count, 8).End(xlUp).Row
If .Cells(y, 8) = sBegriff And .Cells(y, 9) = sZahl Then
GoTo Aus
End If
Next y
loEnde = .Cells(.Rows.Count, 8).End(xlUp).Row + 1
.Cells(loEnde, 8) = sBegriff
.Cells(loEnde, 9) = sZahl
.Cells(loEnde, 10).FormulaR1C1 = "=VLOOKUP(RC[-1],C[-9]:C[-8],2,0)"
.Range(.Cells(1, 8), .Cells(loEnde, 10)).Sort _
Key1:=.Range("H1"), Order1:=xlAscending, _
Header:=xlYes, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom
End With
Aus:
If Err.Number 0 Then MsgBox "Error: " & Err.Number & " " & Err.Description
Set wks = Nothing
End Sub
Anzeige
AW: Zelle auf Übereinstimmung prüfen
09.06.2017 21:07:19
Sepp
Hallo Sigi,
das SelectionChange -Ereignis stellt den Parameter "Target" zur Verfügung, warum also ActiveCell?
0020 hat ja auch keine Länge(4) (Len(4)) weil die führenden Nullen eben nur das Ergebniss des Formates sind, wenn du eine solche Zelle auswählst, dann steht in der Bearbeitungsleiste 20!
Gruß Sepp

AW: Target und ActiveCell
09.06.2017 21:32:30
Sigi
Hallo Sepp,
das mit Len(4) habe ich verstanden und die Spalte als Text formatiert, nun wird alles gefunden.
Mit dem Target und ActiveCell verstehe ich nicht ganz.
Wo liegt der Unterschied?
Ich habe 2005 mal die CD von Herber gekauft und suche mir dort die Beispiele.
Vieles funktioniert zwar nicht mehr aber ich richte mich eben daran.
Danke!
Gruß
Sigi
Anzeige
AW: Target und ActiveCell
09.06.2017 21:43:57
Sepp
Hallo Sigi,
wenn du nur eine Zelle auswählst ist bei SelectionChange Target gleich mit ActiveCell, bei mehr als einer Zelle nicht mehr. Bei anderen Ereignissen wie z.B. Change ist es im Normalfall nicht gleich.
Gruß Sepp

AW: Target und ActiveCell
09.06.2017 21:53:29
Sigi
Hallo Sepp,
werde Deinen Ratschlag befolgen und meinen Code dementspechend abändern.
Das Selectieren von mehren Zellen habe ich sowieso unterbunden.
Vielen Dank!
Gruß
Sigi

311 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige