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

objectvariabele of blokvariabele with is niet ingesteld

Status
Niet open voor verdere reacties.

barbaar

Gebruiker
Lid geworden
7 mei 2008
Berichten
54
Nog een probleempje waar ik opeens tegenaan loop. Ik krijg namelijk de melding objectvariabele of blokvariabele with is niet ingesteld terwijl dezelfde formule het eerst wel deed. Het enige wat echt veranderd is, is dat er een paar tabbladen zijn verborgen sinds de vorige keer. Heb geprobeerd dezelfde macro uit te voeren met de tabbladen weer zichtbaar, maar wilde niet baten. Ik heb verder ook een aantal topics hierover gelezen in dit forum, maar wordt me niet echt veel duidelijker :o

Hier staat de betreffende code:

Code:
Private Sub CommandButtonVerwerknieuw_Click()
    Dim iLC As Integer
    Dim FindString As String
    Dim rng As Range
    Dim Lr As Long
If Application.WorksheetFunction.CountA(Range("A4:F4")) < 6 Then
MsgBox ("Niet volledig ingevuld"): Exit Sub
End If
    FindString = Range("A4")
    If Trim(FindString) <> "" Then
        With Sheets("Voorraadscherm").Range("A29:A65536")
            Set rng = .Find(What:=FindString, _
            After:=.Cells(.Cells.Count), _
            LookIn:=xlValues, _
            lookat:=xlWhole, _
            SearchOrder:=xlByRows, _
            SearchDirection:=xlNext, _
            MatchCase:=False)
           If Not rng Is Nothing Then
 MsgBox ("Productnummer bestaat al"): Exit Sub
          
Else
Lr = Worksheets("Data").Cells(Rows.Count, 1).End(xlUp).Row + 1
With Sheets("Data")
For iKol = 1 To 7
        Sheets("Data").Cells(Lr, iKol) = Sheets("Nieuw product invoeren").Cells(4, iKol)
Next
Lr = Worksheets("Voorraadscherm").Cells(Rows.Count, 1).End(xlUp).Row + 1
With Sheets("Voorraadscherm")
    .Cells(Lr, 1) = Sheets("Nieuw product invoeren").Cells(4, 1)
    .Cells(Lr, 2) = Sheets("Nieuw product invoeren").Cells(4, 2)
    .Cells(Lr, 3) = Sheets("Nieuw product invoeren").Cells(4, 5)
    .Cells(Lr, 4) = Sheets("Nieuw product invoeren").Cells(4, 3)
    .Cells(Lr, 5) = Sheets("Nieuw product invoeren").Cells(4, 8)
    .Cells(Lr, 6) = Sheets("Nieuw product invoeren").Cells(4, 4)
End With
Lr = Worksheets("Inkoopscherm").Cells(Rows.Count, 1).End(xlUp).Row + 1
With Sheets("Inkoopscherm")
    .Cells(Lr, 1) = Sheets("Nieuw product invoeren").Cells(4, 1)
    .Cells(Lr, 2) = Sheets("Nieuw product invoeren").Cells(4, 2)
    .Cells(Lr, 3) = Sheets("Nieuw product invoeren").Cells(4, 5)
    .Cells(Lr, 4) = Sheets("Nieuw product invoeren").Cells(4, 3)
    .Cells(Lr, 5) = Sheets("Nieuw product invoeren").Cells(4, 7)
    .Cells(Lr, 6) = Sheets("Nieuw product invoeren").Cells(4, 8)
    .Cells(Lr, 7) = Sheets("Nieuw product invoeren").Cells(4, 4)
    End With
    Sheets("Nieuw product invoeren").Range("A4:F4").ClearContents
    Sheets("Nieuw product invoeren").Range("H4").ClearContents
    Sheets("Nieuw product invoeren").Visible = False
    NieuwVoorraadverloop
    Sheets("Inkoopscherm").Select
End With
End If
End With
End If
End Sub

Code:
Sub NieuwVoorraadverloop()
    Dim iLC As Integer
    Sheets("Template").Visible = True
    Sheets("Template").Columns("A:G").Copy
    Sheets("Voorraadverloop").Select
[COLOR="Red"]    iLC = Cells.Find(What:="*", SearchOrder:=xlByColumns, _
    SearchDirection:=xlPrevious).Column[/COLOR]
    Cells(1, iLC + 2).EntireColumn.Select
    ActiveSheet.Paste
    Sheets("Template").Visible = False
    Sheets("Inkoopscherm").Select
Sheets("Inkoopscherm").Select
Cells(Cells.Rows.Count, "A").End(xlUp).Select
Selection.Copy
    Sheets("Voorraadverloop").Select
    ActiveCell.Offset(5, 0).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Range("A1").Select
End Sub

Bij het rode gedeelte geeft de editor de foutmelding. Ik hoop dat iemand de fout ziet, ik kom er niet uit :(
 
Sowieso kan dit niet op dezelfde regel staan:

Code:
Cells(1, iLC + 2).EntireColumn.Select
 
Dat gedeelte geeft geen foutmelding en heeft het ook niet gedaan toen de macro nog wel werkte. Hoe zou ik het anders kunnen verwoorden dan? Neem aan dat als de foutopsporing er geen probleem in ziet, het onderdeel goed werkt.
 
Wijs die Find toe aan een Range variabele, en test tevens of er wel iets gevonden is. Pas dan kan je de Column eigenschap nemen en toewijzen aan een variabele.
 
Heb nu
Code:
Dim Datum As String
toegevoegd aan de code en de code als volgt gewijzigd:
Code:
    iLC = Cells.Find(What:="Datum", SearchOrder:=xlByColumns, _
    SearchDirection:=xlPrevious).Column
    Cells(1, iLC + 2).EntireColumn.Select

Ik krijg nog steeds dezelfde foutmelding. Weet niet of ik het goed heb gedaan verder :o
 
Heb inmiddels het een en ander aangepast en moet zeggen dat de macro bijna werkt. Ik krijg nu de volgende foutmelding:

Fout 1004 tijdens uitvoering:

De informatie kan niet worden geplakt omdat het gebied Kopiëren en het plakgebied niet dezelfde vorm en grootte hebben. Ga op een of meer van de volgende gebieden te werk:

* Klik op 1 enkele cel en plak.
* Selecteer een rechthoek van dezelfde grootte en vorm en plak.

De code die ik gebruik is als volgt:

Code:
Private Sub CommandButtonVerwerknieuw_Click()
    Dim iLC As Integer
    Dim FindString As String
    Dim rng As Range
    Dim Lr As Long
If Application.WorksheetFunction.CountA(Range("A4:F4")) < 6 Then
MsgBox ("Niet volledig ingevuld"): Exit Sub
End If
    FindString = Range("A4")
    If Trim(FindString) <> "" Then
        With Sheets("Voorraadscherm").Range("A29:A65536")
            Set rng = .Find(What:=FindString, _
            After:=.Cells(.Cells.Count), _
            LookIn:=xlValues, _
            lookat:=xlWhole, _
            SearchOrder:=xlByRows, _
            SearchDirection:=xlNext, _
            MatchCase:=False)
           If Not rng Is Nothing Then
 MsgBox ("Productnummer bestaat al"): Exit Sub
          
Else
Lr = Worksheets("Data").Cells(Rows.Count, 1).End(xlUp).Row + 1
With Sheets("Data")
For iKol = 1 To 7
        Sheets("Data").Cells(Lr, iKol) = Sheets("Nieuw product invoeren").Cells(4, iKol)
Next
If Worksheets("Voorraadscherm").Range("A4") = "" Then
    Lr = 4
Else
    Lr = Worksheets("Voorraadscherm").Range("A3").End(xlDown).Row + 1
End If
With Sheets("Voorraadscherm")
    .Cells(Lr, 1) = Sheets("Nieuw product invoeren").Cells(4, 1)
    .Cells(Lr, 2) = Sheets("Nieuw product invoeren").Cells(4, 2)
    .Cells(Lr, 3) = Sheets("Nieuw product invoeren").Cells(4, 5)
    .Cells(Lr, 4) = Sheets("Nieuw product invoeren").Cells(4, 3)
    .Cells(Lr, 5) = Sheets("Nieuw product invoeren").Cells(4, 7)
    .Cells(Lr, 6) = Sheets("Nieuw product invoeren").Cells(4, 8)
    .Cells(Lr, 7) = Sheets("Nieuw product invoeren").Cells(4, 4)
    .Cells(Lr, 10) = Sheets("Nieuw product invoeren").Cells(4, 9)
End With
    NieuwVoorraadverloop
    Sheets("Nieuw product invoeren").Range("A4:F4").ClearContents
    Sheets("Nieuw product invoeren").Range("H4").ClearContents
    Sheets("Nieuw product invoeren").Visible = xlVeryHidden
    Sheets("Inkoopscherm").Select
End With
End If
End With
End If
End Sub

Code:
Sub NieuwVoorraadverloop()
    Dim iLC As Integer
    Dim Datum As String
    Sheets("Template").Visible = True
    Sheets("Template").Columns("A:G").Copy
    iLC = Cells.Find(What:="*", SearchOrder:=xlByColumns, _
    SearchDirection:=xlPrevious).Column
    Cells(1, iLC + 2).EntireColumn.Select
    Sheets("Voorraadverloop").Select
    [COLOR="Red"]ActiveSheet.Paste[/COLOR]
    Sheets("Template").Visible = xlVeryHidden
    Sheets("Inkoopscherm").Select
Sheets("Nieuw product invoeren").Select
Range("A4").Select
Selection.Copy
    Sheets("Voorraadverloop").Activate
    ActiveCell.Offset(5, 0).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Range("A1").Select
End Sub

Bij het rode gedeelte krijg ik deze foutmelding. Het rare is dat als ik de foutopsporing beëindig en de sub "NieuwVoorraadverloop" opnieuw doorloop, dat de foutmelding dan wegblijft en alles goed gaat. Ik hoop dat iemand dit kan verklaren, ik snap het namelijk niet echt :/
 
In welk werkblad gebruik je die iLC? En is dat wel nodig?
 
In welk werkblad gebruik je die iLC? En is dat wel nodig?

Ik gebruik iLC op de sheet "voorraadverloop". Of het nodig is, geen idee eigenlijk
bloos.gif
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan