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

Fout 91 Object variabele of blok variabele With is niet ingesteld

  • Onderwerp starter Onderwerp starter sim1
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

sim1

Gebruiker
Lid geworden
2 jul 2007
Berichten
11
Ik krijg fout 91 als ik de volgende macro (een voorbeeld uit de helpfunctie van excel VBA) laat lopen. Deze macro vervangt alle 2tjes in kolom a door 5 jes. Op zich worden alle 2tjes goed vervangen maar aan het einde van deze vervanging krijg ik de foutcode.
Wie weet een oplossing?
Code:
Sub vervang2door5()
Dim c As Range
Dim firstaddress As String

With Worksheets(1).Range("a:a")
    Set c = .Find(2, LookIn:=xlValues)

    If Not c Is Nothing Then
        firstaddress = c.Address
        Do
            c.Value = 5
            Set c = .FindNext(c)
        Loop While Not c Is Nothing Or c.Address <> firstaddress
    End If
End With

End Sub
 
Dat is wel raar. Dit zou zonder fout moeten werken, al weet ik niet hoe jouw bestand eruit ziet. Kan je dat even gezipt bijhangen hier?
 
Simpeler kan ik het niet maken

Dat is wel raar. Dit zou zonder fout moeten werken, al weet ik niet hoe jouw bestand eruit ziet. Kan je dat even gezipt bijhangen hier?

Maak een lege sheet.
kies in het menu: Extra; Macro; VisualBasicEditor
kopieer de code naar ThisWorkbook (Algemeen)
Vul kolom A met getallen waaronder ook 2tjes en run de macro.....

Ik gebruik Excel 2002 maar dat moet niet uitmaken.:rolleyes:
 
Als je in deze regel...
Code:
Loop While Not c Is Nothing Or c.Address <> firstaddress
...het...
Code:
Or c.Address <> firstaddress
...er uit sloopt, doet tie het wel...:thumb:

De reden is dat de object variabele niet ge-'set' is (zie foutmelding) + (volgens mij wordt er de laatste keer géén '2' meer gevonden en dus óók geen 'address'! Er valt dus géén vergelijk meer te maken, en klapt de code. Maar ik gok dat Wigi dat wel kan uitleggen wat de echte reden is...)

Groet, Leo
 
Laatst bewerkt:
Yes!

:thumb: Simpele oplossing, maar werkt wel! Had ik eigenlijk zelf kunnen bedenken...:o ...maar tja je gaat ervanuit dat voorbeelden goed zijn.

bedankt leo!:D
 
..:o ...maar tja je gaat ervanuit dat voorbeelden goed zijn.

Dat zou je beter wel doen, ja.

Het is niet de fout van MS dat er in de laatste regel bij jou Or staat en niet And :confused:

(En ter info, zulke procedures zet je in een module, niet in ThisWorkbook. Daar komt andere code, bv. code wanneer je het bestand opent of sluit. Je krijgt eenn nieuwe module via Invoegen > Module.)

Wigi
 
Laatst bewerkt:
Als je in deze regel...
Code:
Loop While Not c Is Nothing Or c.Address <> firstaddress
...het...
Code:
Or c.Address <> firstaddress
...er uit sloopt, doet tie het wel...:thumb:

Maar ik gok dat Wigi dat wel kan uitleggen wat de echte reden is...)

Leo

De reden staat al in mijn vorige post, maar je moet eens deze code hieronder uitvoeren. Ik laat het aan jou over om vast te stellen wat er gaande is. Dit krijg je als je jouw voorstel doet...

Code:
Sub MsgboxGeven()

Dim c As Range
Dim firstaddress As String

With Worksheets(1).Range("a:a")
    Set c = .Find(2, LookIn:=xlValues)

    If Not c Is Nothing Then
        firstaddress = c.Address
        Do
            Msgbox c.Row
            Set c = .FindNext(c)
        Loop While Not c Is Nothing
    End If
End With

Msgbox "Als je dit te zien krijgt, is het gelukt.", vbCritical

End Sub

Wigi
 
Dat zou je beter wel doen, ja.

Het is niet de fout van MS dat er in de laatste regel bij jou Or staat en niet And :confused:

(En ter info, zulke procedures zet je in een module, niet in ThisWorkbook. Daar komt andere code, bv. code wanneer je het bestand opent of sluit. Je krijgt eenn nieuwe module via Invoegen > Module.)

Wigi

Je hebt gelijk, maar het origineel :
Code:
With Worksheets(1).Range("a1:a500")
    Set c = .Find(2, LookIn:=xlValues)
    If Not c Is Nothing Then
        firstaddress = c.Address
        Do
            c.Value = 5
            Set c = .FindNext(c)
        Loop While Not c Is Nothing And c.Address <> firstaddress
    End If
End With
Geeft hetzelfde probleem. Of heb je daar ook een verklaring voor.
 
Geeft hetzelfde probleem. Of heb je daar ook een verklaring voor.

Ik heb het ook gemerkt nu. Ik zou het zo niet direct weten. Ik stel voor dat je het internet wat afzoekt daarnaar.
 
Te snel geoordeeld?

Ik heb het ook gemerkt nu. Ik zou het zo niet direct weten. Ik stel voor dat je het internet wat afzoekt daarnaar.

Ik heb diverse dingen geprobeerd maar die oplossing van Leo werkt wel want je vervangt de 2 door een 5 en daar komt een einde aan. In jouw voorbeeld loop Wigi vervang je niets!Logisch dat hij dan oneindig blijft loopen...:shocked:
 
Ik heb diverse dingen geprobeerd maar die oplossing van Leo werkt wel want je vervangt de 2 door een 5 en daar komt een einde aan. In jouw voorbeeld loop Wigi vervang je niets!Logisch dat hij dan oneindig blijft loopen...:shocked:

Het is inderdaad niet moeilijk om een oplossing te vinden.

Je zou ook Bewerken > Vervangen kunnen gebruiken, geprogrammeerd dan.

Of met een teller die gaat van 1 tot aantal.als(A:A;2) (wel omgezet in VBA-code).

...

Mogelijkheden genoeg.

Maar dat verklaart nog niet waarom de code uit de helpfiles niet werkt. En dát wil ik graag weten.

Wigi
 
Ik heb dezelfde foutmelding met onderstaande regel:

Set c = .Cells(.Columns(1).Find(cl).Row, .Range("E2:CM2").Find(cl.Offset(, 3)).Column)

Hierbij de gehele macro:

Sub hsv()
Dim cl As Range, c As Range
With Sheets("SOP-ROL")
.UsedRange.Interior.ColorIndex = xlNone
For Each cl In Sheets("Blad7").Columns(2).SpecialCells(2)
If cl.Offset(, 3) <> vbNullString Then
Set c = .Cells(.Columns(1).Find(cl).Row, .Range("E2:CM2").Find(cl.Offset(, 3)).Column)
If Not c Is Nothing Then
c.Interior.ColorIndex = 4
End If
End If
Next cl
End With
End Sub

Op zich doet de macro wat hij moet doen, maar die foutmelding is wel storend...

Weet iemand een oplossing?
 
@Klijhoofd: Je breekt in, in een topic van een ander member welke ook nog eens uit 2007 is. Hetgeen niet de bedoeling is op Helpmij.nl;)
Gaarne zelf een vraag aanmaken. Deze sluit ik.

Succes:thumb:
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan