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

Error 91 - Objectvariabele of blokvariabele is niet ingesteld

Status
Niet open voor verdere reacties.

Kagami

Gebruiker
Lid geworden
23 mrt 2020
Berichten
7
Het betreft hier een vba code om gegevens in het werkblad te wijzigen.
Wijzigingen die aangebracht worden in de eerste 20 records geven geen probleem. Die na de 20 records wel.
Iemand een idee?

' Editme code, afspraak booking project
Sub EditBooking()
'declare the variables
Dim Bws As Worksheet
Dim Fws As Worksheet
Dim IDcount As Range
Dim CK As Range
Dim lastrow As Long
Dim editBookingInRow As Long
Dim ID As Range
'turn off screen updating
Application.ScreenUpdating = False
'variables
Set Bws = Blad2
Set Fws = Blad3
Set IDcount = Fws.Range("B3")
Set ID = Bws.Range("H2")
Set CK = Fws.Range("CK3") 'formula which counts double bookings
On Error GoTo errHandler:
'check for sufficent data
If Bws.Range("H2").Value = "" Or Bws.Range("Q4").Value = "" Or Bws.Range("Q3").Value = "" Or Bws.Range("X3").Value = "" Then
MsgBox "Niet voldoende gegevens ingegeven"
Exit Sub
End If
'run the filter to check for duplicates
AdvChk
'Als er een duplicaat is, stoppen en gebruiker informeren
If CK.Value > 1 Then
MsgBox "Overboeking. Het wijzigen van deze boeking is niet mogelijk !"
Exit Sub
End If
'Laatste rij selecteren
lastrow = Fws.Cells(Rows.Count, "B").End(xlUp)

'Zoek de te wijzigen boeking in de database
editBookingInRow = Fws.Range("B7:B" & lastrow).Find(What:=ID, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Row

With Fws.Cells(editBookingInRow, "C")
.Value = Bws.Range("Q3").Value
.Offset(0, 1).Value = Bws.Range("Q4").Value
.Offset(0, 2).Value = Bws.Range("Q5").Value
.Offset(0, 3).Value = Bws.Range("Q6").Value
.Offset(0, 4).Value = Bws.Range("Q7").Value
.Offset(0, 5).Value = Bws.Range("Q8").Value
.Offset(0, 6).Value = Bws.Range("X3").Value
.Offset(0, 7).Value = Bws.Range("X4").Value
.Offset(0, 8).Value = Bws.Range("X5").Value
.Offset(0, 9).Value = Bws.Range("X6").Value
.Offset(0, 10).Value = Bws.Range("AI7").Value
.Offset(0, 11).Value = Bws.Range("AI8").Value
.Offset(0, 12).Value = Bws.Range("U10").Value
.Offset(0, 13).Value = Bws.Range("AE3").Value
.Offset(0, 14).Value = Bws.Range("AE4").Value
.Offset(0, 15).Value = Bws.Range("AE5").Value
.Offset(0, 16).Value = Bws.Range("AE6").Value
.Offset(0, 17).Value = Bws.Range("AI3").Value
.Offset(0, 18).Value = Bws.Range("AI4").Value
.Offset(0, 19).Value = Bws.Range("AI5").Value
.Offset(0, 20).Value = Bws.Range("AI6").Value
.Offset(0, 21).Value = Bws.Range("I9").Value
.Offset(0, 22).Value = Bws.Range("I10").Value
.Offset(0, 23).Value = Bws.Range("I11").Value
.Offset(0, 24).Value = Bws.Range("I12").Value
.Offset(0, 25).Value = Bws.Range("I13").Value
.Offset(0, 26).Value = Bws.Range("M13").Value
.Offset(0, 27).Value = Bws.Range("I14").Value
.Offset(0, 28).Value = Bws.Range("N10").Value
.Offset(0, 29).Value = Bws.Range("P10").Value
.Offset(0, 30).Value = Bws.Range("R10").Value
.Offset(0, 31).Value = Bws.Range("H6").Value
.Offset(0, 32).Value = Bws.Range("N13").Value
.Offset(0, 33).Value = Bws.Range("P13").Value
.Offset(0, 34).Value = Bws.Range("R13").Value
.Offset(0, 35).Value = Bws.Range("S4").Value
.Offset(0, 36).Value = Bws.Range("I8").Value
End With
'run the filter to limit data
FilterRng
'select the bookings sheet
Bws.Select
'run the macro to add the bookings
Bookings
'error block
On Error GoTo 0
Exit Sub
errHandler:
MsgBox "An Error has Occurred " & vbCrLf & "The error number is: " _
& Err.Number & vbCrLf & Err.Description & vbCrLf & _
"Please notify the administrator"
End Sub
 
Laatst bewerkt:
En haal die on error er voor de gelegenheid even uit.
Dan zie je precies waar het fout gaat.
 
En doe er bij voorkeur een voorbeeld bestandje bij :).
 
En haal die on error er voor de gelegenheid even uit.
Dan zie je precies waar het fout gaat.

editBookingInRow = Fws.Range("B7:B" & lastrow).Find(What:=ID, LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Row

Hier blijkt het fout te gaan. Eigenaardig dat de eerste 20 records het wel goed doen, maar de recotds +20 wijzigen geeft deze foutmelding.

In bijlage het bestand.
Het gaat hier over pagina 'AGENDA' en 'DATA'.
De data pagina is opgedeeld in de originele records (A t/m AM) en een copy (AS t/m CD) die waarvan de gegevens opgehaald worden voor in de agenda te plaatsen (volgens datumselectie) om de file niet te zwaar te beladen.
 

Bijlagen

Je voegt regels toe maar past lastrow niet aan.
Wijzig:
Fws.Range("B7:B" & lastrow)
In:
Fws.Range("B:B")


En probeer het dan nog eens.
Beter controleer je ook nog of het gezochte gevonden werd.
Fout 91 geeft aan dat dat niet zo is.
 
Laatst bewerkt:
Je voegt regels toe maar past lastrow niet aan.
Wijzig:
Fws.Range("B7:B" & lastrow)
In:
Fws.Range("B:B")


En probeer het dan nog eens.
Beter controleer je ook nog of het gezochte gevonden werd.
Fout 91 geeft aan dat dat niet zo is.

Top. Bedankt Edmoor.
Blijkt te werken.
Ik ga er nu natuurlijk vanalles mee proberen om te zien of het nog ergens kan vastlopen.

Enorm bedankt.
Case closed! TOP !
 
Je voegt regels toe maar past lastrow niet aan.
Wijzig:
Fws.Range("B7:B" & lastrow)
In:
Fws.Range("B:B")


En probeer het dan nog eens.
Beter controleer je ook nog of het gezochte gevonden werd.
Fout 91 geeft aan dat dat niet zo is.

Sorry voor de storing.
Alle werkt nu wel prima. Alleen het laatste record, hetwelk dat ook is' is niet te 'wijzigen'.
Misschien een idee?
 
Geen idee wat ja daarmee bedoelt.
 
Als ik 19 datalijnen heb, lukt het om de eerste 18 datalijnen aan te passen met voornoemde macro. Maar de 19de lijn lukt niet. Geeft ook geen foutmelding maar boekt de gewijzigde gegevens niet.
Als ik 20 datalijnen heb, lukt lijn 19 wel, maar dan kan ik op datalijn 20 geen gemaakte wijzigingen boeken.
Er is iets dat ervoor zorgt dat de laatste datalijn niet gewijzigd kan worden. En ik kan niet vinden wat.
Delete kan maar aanpassen lukt niet.
 
Loop de boel dan door in debug mode (F8) om te zien wat er precies op welk moment gebeurt bij die regel.
 
Hi Edmoor. Sorry voor de onduidelijkheid.
De macro loopt, door je aanbeveling, moeiteloos, mooi en goed.
Het probleem is niet de geschreven lijnen in de macro, maar de data lijnen in het tabblad 'DATA'.
Als daar 18 lijnen staan, kan ik op 17 lijnen de data aanpassen (wijzigen).
Als daar 25 lijnen staan, kan ik op 24 lijnen de data aanpassen (wijzigen).
Dus kan ik met de huidige aangepaste macro de laatste lijn in het tabblad 'Data' niet wijzigen.
Ik krijg ook geen foutmelding.
Dus ergens zit er iets fout in het boeken van wijzigingen.
 
Deze code heeft het probleem totaal opgelost:

'Laatste rij selecteren
lastrow = Fws.Range("B" & Rows.Count).End(xlUp).Row
Set orange = Fws.Range("B7:B" & lastrow)

Edmoor, thanks voor alle hulp. Top.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan