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

zoeken in vba

Status
Niet open voor verdere reacties.

Jack Nouws

Terugkerende gebruiker
Lid geworden
16 apr 2008
Berichten
1.396
hallo

Ik heb van 15 codes 1 code gemaakt. (knap he)
Alleen hij werkt niet. (jammer he)
Wie kan deze code aanpassen zodat hij wel gaat werken?
Code:
Sub waarde_ophalen()
Dim c       As Range
Dim i       As Range

Set ws = Sheets("Overzichten")

For i = 3 To Worksheets.Count
    For Each c In Sheets(i).Range("A6:A20")

     If c.Value = ws.Range("A1").value Then
        ws.Range("A2") = c.Value.Offset(0, 8) + ws.Range("A2").Value
        ws.Range("A3") = c.Value.Offset(0, 9) + ws.Range("A3").Value
      End If
    Next
Next i

End Sub
Met vr gr
Jack
 
Laatst bewerkt:
Ja hoezo. Hoe weet jij dat?
Altijd handig om dat even aan te geven, zodat helpers ook daar even kunnen kijken en er geen dubbel werk wordt verricht: zonde van de tijd.
 
Ja hoezo, Hoe weet jij dat?

k heb 60 tabbladen ( staat in je sheet , komt dit niet overeen met For i = 60 To dat staat als vraag Worksheets.Count ?

Kan zijn dat mijn ogen flikkeren van het rijden of van weinig slaap naar ik zie een bepaalde gelijkenis
 
Altijd handig om dat even aan te geven, zodat helpers ook daar even kunnen kijken en er geen dubbel werk wordt verricht: zonde van de tijd.

Oke ik zal voortaan aangeven als er linken ergens anders naar toe zijn!;)
 
k heb 60 tabbladen ( staat in je sheet , komt dit niet overeen met For i = 60 To dat staat als vraag Worksheets.Count ?

Kan zijn dat mijn ogen flikkeren van het rijden of van weinig slaap naar ik zie een bepaalde gelijkenis

Ik dacht altijd dat For i = tellen vanaf tabblad 60 tot einde.
maar hoe zit dat dan precies?

Met vr gr
Jack
 
Zoals Wigi al eens aangaf een goed VBA boek zal veel ophelderen
Dim rij(1 To 4) As Integer
For i = 1 To 4 'indextelling begint bij 1
rij(i) = i
Merk als eerste op, dat we de indextelling bij 1 laten beginnen en niet bij 0, zoals in Java. Dat stellen we in met het argument 1 To 4. .
Mijn opmerking was een kopie van de 2 fora's bij elkaar geplakt
 
Dim rij(1 To 4) As Integer
For i = 1 To 4 'indextelling begint bij 1
rij(i) = i
Merk als eerste op, dat we de indextelling bij 1 laten beginnen en niet bij 0, zoals in Java. Dat stellen we in met het argument 1 To 4. .
Mijn opmerking was een kopie van de 2 fora's bij elkaar geplakt

Laat de bandjes maar flink rollen want het is bijna weekend
Bij deze regel krijg ik een foutmelding nl. "object vereist"
- wat wordt daarmee bedoelt
- hoe geef ik een object weer
Code:
Sub waarde_ophalen()
Dim rij(3 To 10) As Integer

For i = 3 To 10 'indextelling begint bij 1
    rij(i) = i
        [COLOR="Red"]For Each c In Sheets(i).Range("A6:A20")[/COLOR]            
           If c.Value = ws.Range("A1").Value Then
                Sheets("Overzichten").Range("A2") = c.Value.Offset(0, 8) + Sheets("Overzichten").Range("A2").Value
                Sheets("Overzichten").Range("A3") = c.Value.Offset(0, 9) + Sheets("Overzichten").Range("A3").Value
            End If
        Next
Next i

End Sub
 
Laatst bewerkt:
@ Jack de voorbeeldjes dat ik geef hebben totaal geen betrekking op jouw probleempje , ik geef ze enkel te rverduidelijking waarvoor je een for i = kan zetten , anders post ik de code wel tussen tags om duidelijker te zijn .
Onze bandjes rollen ook in het weekend anders gaan ze in de suppermarkten en broodjes zaken weinig verkopen :p
 
Hallo

Ik heb het hele zaakje werkend gekregen alleen nu is mijn vraag hoe komt het dat het zolang duurt voordat alles opgeteld is? Kun je ook buiten een lus om het hele zaakje optellen?

Met vr gr
Jack
Code:
Sub waarde_ophalen()
Dim c   As Range

Sheets("Overzichten").Range("A2") = "0"
Sheets("Overzichten").Range("A3") = "0"

For i = 4 To 57 'indextelling begint bij 1

        For Each c In Sheets(i).Range("A6:A20")
            If c.Value = Sheets("Overzichten").Range("A1").Value Then
                Sheets("Overzichten").Range("A2") = c.Offset(, 8).Value + Sheets("Overzichten").Range("A2").Value
                Sheets("Overzichten").Range("A3") = c.Offset(, 9).Value + Sheets("Overzichten").Range("A3").Value
            End If
        Next
Next i

End Sub
 
Eens kijken bij Variabelen Declareren hier is daarvoor een goede pagina . http://www.newbytes.be/TekstExcel/Variabelen.htm
je range is van A6:A20 ( 15) en je i is van 4 tot 57 (54 )
dim i as worksheet ?

Beste trucker10

Je hebt me ontzettend blij gemaakt met deze link om variabelen te selecteren.
Ik had nog nooit met het venster Lokale Variabelen gewerkt omdat ik niet wist hoe het werkte maar dankzij deze link zit er een uitvoerige beschrijving bij.:thumb::thumb::thumb:

Nu heb ik er een Integer van gemaakt (Dat gaf het venster aan!!) maar dat maakt de bewerking niet sneller en zeker niet wanneer in ik de Range wil vergroten naar (100-150).
Zou er nog een andere code zijn waarbij dit wel sneller zou gaan?

Met vr gr
Jack
 
Jack , wat doet je code als je in de vba editor een muisklik links naast sub heeft ( cursor daar zetten ) en daarna druk je op F8 , je loopt dan je code stap per stap af en als je bij de eerste next komt zal hij herbeginnen bij If c.Value ........... en ik denk dat je daar dan mag blijven drukken op die F8 button > duurt ?? lang !
 
Jack , wat doet je code als je in de vba editor een muisklik links naast sub heeft ( cursor daar zetten ) en daarna druk je op F8 , je loopt dan je code stap per stap af en als je bij de eerste next komt zal hij herbeginnen bij If c.Value ........... en ik denk dat je daar dan mag blijven drukken op die F8 button > duurt ?? lang !

Het eerste wat me opvalt is wannneer ik met F8 door die code stap dat het bij het rode gedeelte regelmatig hapert (kan het staps gewijs drukken zelfs nog niet bij houden).
En in totaal duur het ongeveer 4 min en 50 sec als ik er continu op druk.

Code:
Sub waarde_ophalen()
Dim c      As Range
Dim i      As Integer

    Sheets("Overzichten").Range("A2") = "0"
    Sheets("Overzichten").Range("A3") = "0"

    For i = 4 To 57 'indextelling begint bij 1
        For Each c In Sheets(i).Range("A6:A20")
            If c.Value = Sheets("Overzichten").Range("A1").Value Then
                [COLOR="Red"]Sheets("Overzichten").Range("A2") = c.Offset(, 8).Value + Sheets("Overzichten").Range("A2").Value
                Sheets("Overzichten").Range("A3") = c.Offset(, 9).Value + Sheets("Overzichten").Range("A3").Value[/COLOR]           
           End If
        Next
    Next i

End Sub
 
Waarom gebruik je geen Find en FindNext? Al die lussen maken het uiteraard traag.
 
Waarom gebruik je geen Find en FindNext? Al die lussen maken het uiteraard traag.

Kun je zeggen hoe je die lussen van die tabbladen eruit krijgt.
Code:
Sub waarde_ophalen3()
    Dim i               As Integer
    Dim c               As Range
    Dim firstAddress    As String
    
    Sheets("Overzichten").Range("A2") = "0"
    Sheets("Overzichten").Range("A3") = "0"

For i = 4 To 57
    With Worksheets(i).Range("A6:A20")
        Set c = .Find(Sheets("Overzichten").Range("A1"), LookIn:=xlValues)
        If Not c Is Nothing Then
            firstAddress = c.Address
            Do
                Sheets("Overzichten").Range("A2") = c.Offset(, 8).Value + Sheets("Overzichten").Range("A2").Value
                    Sheets("Overzichten").Range("A3") = c.Offset(, 9).Value + Sheets("Overzichten").Range("A3").Value
                Set c = .FindNext(c)
            Loop While Not c Is Nothing And c.Address <> firstAddress
        End If
    End With
Next i
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan