• 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.

opzoeken waarde in cel ander tabblad tbv vba autofilter

Status
Niet open voor verdere reacties.

serpent xx

Gebruiker
Lid geworden
2 mei 2008
Berichten
148
Hallo allemaal,

in bijgaand bestandje wordt de waarde in cel A20 gebruikt voor de VBA activate; dit werkt. Ik wil alleen graag de waarde in de VBA rechtstreeks laten verwijzen naar cel A2 in blad "selectie". Alhoewel mij dit in eerste instantie vrij simpel leek, krijg ik de code niet werkend.

Weet iemand raad?
 

Bijlagen

  • voorbeeldje (3).xlsm
    18 KB · Weergaven: 52
zo:
Code:
Private Sub Worksheet_Activate()
Application.ScreenUpdating = False
Unprotect
Selection.AutoFilter
ActiveSheet.Range("$A$1:$D$13").AutoFilter Field:=1, Criteria1:=[COLOR="#FF0000"]Sheets("selectie").Range("A2")[/COLOR]
Range("c1").Select
ActiveSheet.Protect AllowFiltering:=True
Application.ScreenUpdating = True

End Sub
 
Onderstaand doet geen dienst in de code.

Code:
Selection.AutoFilter
ActiveSheet.

Je kan het rustig zo schrijven.
Code:
Private Sub Worksheet_Activate()
  Unprotect
  Range("A1:D13").AutoFilter 1, Sheets("selectie").Range("A2")
  Protect AllowFiltering:=True
End Sub
 
Beste Harry,

nu heb ik meerdere dezelfde bladen als Blad 1. Moet ik deze VBA per worksheet instellen of kan dit in 1 keer voor alle bladen m.u.v. blad 2 en blad 3?
 
Die andere code eruit, en onderstaande in ThisWorkbook.
Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
ff fh.name <> "Blad 2" and sh.name <> "Blad 3" then
  sh.Unprotect
  sh.Range("A1:D13").AutoFilter 1, Sheets("selectie").Range("A2")
  sh.Protect AllowFiltering:=True
end If
End Sub
 
Harry,

die krijg ik niet werkend. Ik heb in het originele bestand 3 sheets die buiten beschouwing gelaten dienen te worden.
Ik probeer dit als volgt in te geven:

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
ff fh.name <> "blad 2" and sh.name <> "blad 3" and sh.name "blad 4" then
Sh.Unprotect
Sh.Range("A1 : D13").AutoFilter 1, Sheets("selectie").Range("A2")
Sh.Protect AllowFiltering:=True
End If
End Sub

Maar dan krijg ik een foutmelding op de rode regel.
Wat doe ik fout?
 
Excuus.
Code:
[COLOR=#FF0000]if sh.name <> "blad 2" and sh.name <> "blad 3" and sh.name "blad 4" then[/COLOR]
 
Perfect!

Nu zoek ik enkel nog het volgende:
Als de waarde in A2 van Sheets("selectie")"0" is dan is het de bedoeling dat hij op alle "gefilterde" werkbladen weer alle resultaten laat zien.
Kan ik dit verwerken in deze code of moet ik daar een aparte voor aanmaken die de filters weer terugzet?
 
Plaats het bestand eens.
 
Beste Harry,

Ik heb bijgaand bestandje bijgesloten. De bladen 1 t/m 5 zijn gegevensbladen. Deze worden in de loop vd tijd steeds meer.

Als de waarde in A2 van Sheets("selectie")"0" is dan is het de bedoeling dat hij op alle "gefilterde" werkbladen weer alle resultaten laat zien.
Kan ik dit verwerken in deze code of moet ik daar een aparte voor aanmaken die de filters weer terugzet?


Kun je hier iets mee?
 

Bijlagen

  • vb.xlsm
    29 KB · Weergaven: 58
Test het maar eens.
 

Bijlagen

  • vb.xlsb
    29,8 KB · Weergaven: 50
Dat is gedeeltelijk wat ik zoek. Het werkt in bestaande tabbladen; nieuwe worden echter hierin niet meegenomen omdat die ook niet in de code staan. Kun je dit wel aanpassen zodat dit ook voor nieuwe geldt? Bv dat dit geldt voor alle tabbladen m.u.v. blad "selectie", "sel2"en "sel3"?
 
Verwijder de code in ThisWorkbook.
Plaats onderstaande in Sheets selectie.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Address(0, 0) = "A2" Then
 Application.ScreenUpdating = False
   For Each Sh In Sheets
       If InStr("|selectie|sel2|sel3|", "|" & Sh.Name & "|") = 0 Then
        Sh.Unprotect
         If Target.Value = 0 Then
            If Sh.FilterMode Then Sh.ShowAllData
         Else
            Sh.Range("A1:D13").AutoFilter 1, target.value
         End If
       Sh.Protect AllowFiltering:=True
    End If
   Next Sh
  End If
End Sub
 
Laatst bewerkt:
Ik mis enkel nog het feit dat de cursor in beide gevallen in cel C1 geplaatst dient te worden bij uitvoering van de VBA.
Ik heb dit geprobeerd met Range("C1").Select maar hier doet hij niets mee (waarom niet is mij een raadsel).
Daarnaast valt mij op dat er niet wordt afgesloten met Application.ScreenUpdating = True; is dit niet noodzakelijk?

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) = "A2" Then
Application.ScreenUpdating = False
For Each Sh In Sheets
If InStr("|selectie|sel2|sel3|", "|" & Sh.Name & "|") = 0 Then
Sh.Unprotect
If Target.Value = 0 Then
If Sh.FilterMode Then Sh.ShowAllData
Else
Sh.Range("A1:D13").AutoFilter 1, target.value
End If
Sh.Protect AllowFiltering:=True
End If
Range("c1").Select
Next Sh
End If
End Sub
 
Laatst bewerkt:
Sh.range("c1").select
Op True gaat automatisch.
 
Ook met deze krijg ik het niet werkend. Wat doe ik fout? Ik heb de Sh.Range("c1").Select geplaatst op de plek van Range("c1").Select.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan