• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Niet zoeken in gefilterde gedeelte

Status
Niet open voor verdere reacties.

Logicgold

Gebruiker
Lid geworden
5 feb 2013
Berichten
46
Beste helpers,

Met onderstaande macro wordt doormiddel van een commandbutton het volgende uitgevoerd.
* Er wordt een zoekvenster geopend
* Daar vul ik een zoekopdracht in
* Zodra de te zoeken opdracht is gevonden wordt er in kolom A van die rij een x neer gezet.

((In een andere macro wordt alles er in kolom A een x staat een filter uitgevoerd, zodat die regel niet meer zichtbaar is)).

De macro in de commandbutton werkt opzicht goed, maar zodra ik een zoekopdracht geef die het zelfde nummer heeft als het nummer in het gefilterde gedeelte dan wordt de macro wederom uitgevoerd op dat gedeelte.
Hierdoor wordt het nummer dat nog niet is gefilterd niet opgenomen in de zoekopdracht.

Mijn vraag is een aanpassing in de macro die er voor kan zorgen dat het volgende mogelijk is:
OF er mag niet gezocht worden in het gefilterde gedeelte;
OF zodra er in Kolom A een x staat dat die automatisch naar de eerstvolgend waarde gaat die voldoet aan mijn zoekopdracht waar in kolom A geen x staat.

Hier is de macro die een aanpassing nodig heeft.

Code:
Private Sub CommandButton1_Click()
'
' Als op de CommandButton TERUG wordt geklikt wordt er een zoekvenster geopend.
' Daarin vul je de gewenste zoekopdracht in.
' Zodra je op enter drukt wordt er in kolom A van die regel een x gezet.
  Dim i As Long
  Dim Lr As Long
  Dim Nr As String    
 
   Nr = InputBox("Zoek nummer: ")
  If Nr = "" Then Exit Sub
    
  With ActiveSheet
  For i = 3 To .Cells(.Rows.Count, "B").End(xlUp).Row
  If .Cells(i, 2) = Nr Or .Cells(i, 3) = Nr Then
    .Cells(i, 1) = "x"
    Application.Goto .Cells(i, 9)
    Range("B:B").Find("").Select
  Exit For
  End If
  Next i
  End With
End Sub

Alvast bedank voor jullie hulp.

Mvg. Louis
 

Bijlagen

Laatst bewerkt:
Gebruik svp codetags om het leesbaar te houden. Wat je wil weet ik eigenlijk niet mogelijk zoiets. Dat het er niet uit klapt met jouw change event is ook al bijzonder.

Code:
Private Sub CommandButton1_Click()
Dim s As String
Nr = InputBox("Zoek nummer: ")
    If Nr = "" Then Exit Sub
    For Each cl In Columns(2).SpecialCells(2)
        s = cl.Value
        If s = Nr Then cl.Offset(, -1) = "x"
    Next cl
End Sub
 
VenA Bedankt voor je tip aangaande codetags. Ik heb er even niet bij stil gestaan.

Ook bedankt voor je Macro.

Deze zorgt er inderdaad voor dat alles met mijn zoekopdracht een x krijgt in kolom A.
Echter doet die dat ook waar al een x in kolom A staat.
Als er bijvoorbeeld 100 keer het nummer 4502 in de filter zit met een x in kolom A en één keer zonder x gaat de macro 100 keer een handeling verrichten die niet meer nodig is en één keer wat die wel moet doen.
Hierdoor wordt door de macro zoveel handelingen verricht die niet meer nodig zijn, waar mij PC geen moeite mee heeft, maar ik kan indenken dat een ander systeem er gelijk uitklapt.
Als ik zonder macro een zoekopdracht geef, wordt er alleen gezocht in het niet gefilterde gedeelte.

Ik ben op zoek naar een macro die alleen zoek in het gedeelte dat zichtbaar is.
Er mag dus niet gezocht worden in het gedeelte dat is weg gefilterd.
Ik hoop dat hier toch een macro voor te verzinnen is.

m.v.g. Louis
 
Laatst bewerkt:
Met deze macro is mijn vraag opgelost.

Code:
Private Sub CommandButton1_Click()
zoek = Application.InputBox("Typ iets", "Zoeken!", "vul iets in", , , , , 1 + 2)
If Not zoek = False Then
 Set c = Columns("b:c").Find(zoek, , , xlWhole)
 If Not c Is Nothing Then Cells(c.Row, 1) = "x"
End If
End Sub

Louis
 
Wat het traag maakt is dat er bij elke wijziging in kolom A jouw change event aangeroepen wordt.

Voor het drukken op de knop
Code:
Private Sub CommandButton1_Click()
Application.EnableEvents = False
Range("A:A").AutoFilter 1, "=Terug", xlOr, "="
Nr = InputBox("Zoek nummer: ")
    If Nr = "" Then Exit Sub
    For Each cl In Columns(2).SpecialCells(2).Offset(, -1).SpecialCells(4).Offset(, 1)
        If CStr(cl.Value) = Nr Then cl.Offset(, -1) = "x"
    Next cl
Range("A:A").AutoFilter 1, "=Terug", xlOr, "="
Application.EnableEvents = True
End Sub

Voor wijzigingen in het blad
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
    If .Count = 1 Then
        Select Case .Column
            Case 1
            If .Value = "x" And .Offset(, 1) <> "" Then
                Range("A:A").AutoFilter 1, "=Terug", xlOr, "="
                Range("B:B").Find("").Select
            End If
            Case 2
                If .Value > 0 Then .Offset(, 6) = Date Else .Offset(, 6) = ""
            Case 7, 9
                Range("B:B").Find("").Select
        End Select
    End If
End With
End Sub

Waarbij het een beetje vreemd is dat je eigenlijk nooit in kolom I komt als er in kolom G wat ingevuld wordt.
 
Ik denk dat ik hiermee je terechte vraag kan beantwoorden.

Het komt bijna nooit voor dat er in kolom I (opmerkingen) iets wordt ingevuld.
Daarom wil ik dat wanneer er iets in kolom G (Project_naam) wordt ingevuld, dat die automatisch naar de volgende lege cel in kolom B gaat.
Als ik toch een opmerking wil neerzetten kan ik zelf de cel in kolom I aanklikken en een opmerking noteren.
Wanneer ik vanuit daar op enter druk gaat die automatisch weer naar de volgende lege cel in kolom B
Voordat ik in dit bestand macro's plaatste was de grootste irritatie dat de begin cel niet goed was en zodra ik het product in-scande de mans-code in de verkeerde cel kwam.

Bedankt voor je meedenken.

Louis
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan