Zoeken en vervangen

Status
Niet open voor verdere reacties.

Neuz

Gebruiker
Lid geworden
21 aug 2012
Berichten
147
Hey Allemaal,

Ik ben al enige tijd bezig met een document te maken waarin veel gegevens
verwerkt worden. Nu heb ik hiervoor verschillende Userforms gemaakt. Op
een van de Userforms staat de mogelijkheid om gegevens op een tabblad
te wijzigen. Hiervoor gebruik ik met succes de volgende code.

Code 1
Code:
Dim code2 As Range
        With Worksheets("Users")
            Set code2 = .Range("E:H").Find(FormMenu.LabGebWijzGebnaam, LookIn:=xlValues, LookAt:=xlWhole)
            .Cells(code2.Row, 7) = FormMenu.ComGebWijzRecht
        End With

Nu heb ik deze code ook gekopieerd naar een ander Userform en een aantal
kleine dingen aangepast. Dit is de code.

Code 2
Code:
Dim code2 As Range
    With Worksheets("Users")
        Set code2 = .Range("B:E").Find(FormDagprog.LabDatum, LookIn:=xlValues, LookAt:=xlWhole)
        .Cells(code2.Row, 4) = FormDagprog.ComDagprog
    End With

Nu is het vreemde Code 1 werkt perfect en zonder fouten, maar code 2
geeft de volgende melding

Fout 91 tijdens uitvoering
Objectvariabele of blokvariabele With is niet ingesteld

Als ik op Fout opsporen klik geeft Excel de volgende lijn weer
Code:
.Cells(code2.Row, 4) = FormDagprog.ComDagprog

Kunnen jullie me helpen.

Alvast bedankt.

Groet Neuz
 
Welke waarde krijgt code2? Bestaat FormDagprog? Bestaat ComDagprog? Meer kan ik niet verzinnen zonder bestand.
 
Je zoekt in het verkeerde blad.

De waarde van code2 kan je in de VB-editor zien. Is in dit geval Nothing.

Knipsel.PNG

Je kan om foutmeldingen te voorkomen beter zo'n constructie gebruiken.
Code:
If Not code2 Is Nothing Then .Cells(code2.Row, 4) = FormDagprog.ComDagprog
 
Beste VenA,

Ik heb nu de code aangepast zodat ik wel op het juiste
tabblad zoek (namelijk: Bron) en ook jouw code erbij
gezet. Echter worden de gegevens nog steeds niet ingevuld.

De code welke ik nu gebruik is als volgt.
Code:
Dim code As Range
    With Worksheets("Bron")
        Set code = .Range("B:E").Find(FormDagprog.LabDatum, LookIn:=xlValues, lookat:=xlWhole)
            If Not code Is Nothing Then .Cells(code.Row, 2) = FormDagprog.ComDagprog
            If Not code Is Nothing Then .Cells(code.Row, 3) = FormDagprog.ComPeriode
    End With
 
Je zoekt naar de tekst die in de label staat.
Code:
.Range("B:E").Find([COLOR=#ff0000]FormDagprog.LabDatum[/COLOR], LookIn:=xlValues, LookAt:=xlWhole)
En in die label staat....??????

Juist, "LabDatum"
 
In het label (FormDagprog.LabDatum) staat de datum welke ik geselecteerd heb.

Deze wordt door deze code aangeroepen
Code:
    With FormMenu.LisDagprog
        FormDagprog.LabDatum = Format(.List(.ListIndex, 0), "d-m-yyyy")
    End With
    FormDagprog.Show

Hopelijk kunnen jullie me verder helpen.
 
Zoek op datums met de functie Match.
Voor exotische opmaken veel beter.
 
Beste HSV,

Met de functie Match ben ik niet bekend kan je hier een kort voorbeeld of uitleg van geven?

Alvast bedankt.
 
Maak een voorbeeldbestand dat aansluit bij de vraag. Om het hele project te onderzoeken is niet vraaggericht en dan ben je afhankelijke van een helper die er de tijd voor genomen heeft. Als je niet bekend met een bepaalde functie dan bestaat daar de <F1> knop voor en ook een welbekende zoekmachine kan je verder helpen.
 
je kunt in een combobox of listbox in het userform alle waarden van een werkblad zetten (met de opdracht .list)
Als je wijzigingen wil aanbrengen doe je dat eerst in de Combobox/Listbox.
Pas als je daarmee klaar bent kun je de gegevens uit de combobox/listbox in 1 keer naar het werkblad wegschrijven.

Code:
Private Sub Userform_Initialize()
   Listbox1.List=sheet1.cells(1).currentregion.value
End Sub
Code:
Private Sub Textbox1_Change()
    if listbox1.listindex>1 then listbox1.column(1)=textbox1.text
end sub
Code:
Private Sub knop_klaar_Click()
   sheet1.cells(1).currentregion=Listbox1.List
End Sub
 
Beste helpers,

Op advies van 1 van jullie hierbij even een document waarbij alles eruit gefilterd is en alleen
de dingen zichtbaar zijn waar het over gaat.

Bekijk bijlage Jaarplanner - Helpmij.xlsm

@SNB
Jouw oplossing hoe verwerk ik deze in mijn voorbeeld? Zoals ik de oplossing nu zie wordt
de hele listbox opnieuw weggeschreven op een tabblad. Maar ik wil alleen 1 datum aanpassen.

Hoor het graag weer van jullie.
 
Laatst bewerkt:
Even los van de suggesties van snb, probeer het zo eens.
 

Bijlagen

  • Jaarplanner - Helpmij.xlsb
    27,3 KB · Weergaven: 69
De gegevens in de listbox zijn identiek aan de gegevens van het werkblad.
Je hoeft daarom niet te zoeken naar iets wat er al is.

Code:
Private Sub CmdDoorgaan_Click()
  Sheets("bron").Cells(FormMenu.LisDagprog.ListIndex + 22, 4).Resize(, 2) = Array(ComDagprog, ComPeriode)
  Unload Me
End Sub
 
Onwijs bedankt voor de hulp. Zowel de oplossing van VenA als die van HSV
werken perfect.

Slotje gaat erop.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan