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

VBA data weg laten schrijven

Status
Niet open voor verdere reacties.

Kim2011

Gebruiker
Lid geworden
20 mei 2011
Berichten
62
Hoi allemaal,

Ik heb een moederbestand (bijlage 1) en meerdere invulbestanden (als voorbeeld bijlage 2).

Bijlage 1: Bekijk bijlage Producten.xlsm
Bijlage 2: Bekijk bijlage Appels.xlsm

In mijn moederbestand heb ik een knop welke ik er voor wil laten zorgen dat gegevens uit dit bestand worden weggeschreven in een invulbestand. Wat ik nu heb is dat de code het bestand opent op de achtergrond (niet zichtbaar) en dan data wordt weggeschreven bij de juiste datum, maar ik krijg een foutmelding (in de rode regel) waar ik niet uit kom. 'Fout 91 tijdens uitvoering: Objectvariabele of blokvariabele With is niet ingesteld'. Wie kan mij helpen?

Dit is de code die ik heb:
Code:
Sub OpenAndManipulate()

    Dim xl0 As New Excel.Application
    Dim xlw As New Excel.Workbook
    Dim wbProduct As Workbook
    Dim strDatum As String
    Dim oSht As Worksheet
    Dim oWb As Workbook
    Dim rngActivecell, rngColumn1, rngColumn2 As Range
    
    'Pak de huidige datum:
    Set wbProduct = ActiveWorkbook
    strDatum = wbProduct.Sheets(1).Range("T5")
    strDatum = getFirstOfMonth(strDatum)

    ' get columnranges
    Set rngColumn1 = wbProduct.Sheets(1).Range("D9")
    
    ' Loop
    Set rngActivecell = rngColumn1.Offset(1, 0)
    rngActivecell.Select
    
    i = 9
    Do While i <= Range("Q1").Value
    Set xlw = xl0.Workbooks.Open("C:\" & Range("B" & i) & ".xlsm")

        Set oSht = xlw.Sheets("Aantal")
        If IsEmpty(oSht) Then
            MsgBox "Kan de juiste sheet niet vinden. Ik stop ermee."
            GoTo exit_command
        End If
        Call sheetvullen1(oSht, strDatum, rngActivecell.Offset(0, 1).Value)

    xlw.Save
    xlw.Close
    Set xl0 = Nothing
    Set xlw = Nothing
    
    i = i + 1
    
    Loop

exit_command:

End Sub


Function getFirstOfMonth(strDate As String)
    ' Maakt van de huidige datum de eerste van de maand datum
    
    Dim strItems() As String
    strItems() = Split(strDate, "-")
    getFirstOfMonth = "1-" & ActiveSheet.Range("M1").Value & "-" & strItems(2)

End Function


Function sheetvullen1(oSht As Worksheet, strDatum As String, strValue As String)
       
    ' Zoek cell met corresponderende datum in Sheet
    Dim FoundCell As Range
    Set FoundCell = oSht.Range("A1:O100").Find(what:=DateValue(strDatum), LookIn:=xlValues)
    If IsEmpty(FoundCell) Then
        MsgBox "Kan de datum niet vinden. Ik stop ermee"
        GoTo exit_command
    End If
    
    [COLOR="#FF0000"]FoundCell.Offset(1, 0).Value = strValue[/COLOR]

exit_command:

End Function
 
Laatst bewerkt:
Weet ze zeker dat je niet "Nothing" terugkrijgt uit je find? isempty reageert niet op "nothing". nothing geldt als een correcte waarde
 
Er gaat inderdaad iets mis in de Find. Volgens mij bij het benoemen van 'Foundcell'. Hoe kan ik dit oplossen?

Of vermoedelijk al bij [ Set oSht = xlw.Sheets("Aantal") ]. Ik heb geen idee wat er niet aan klopt en ook met behulp van de foutmelding kom ik er niet uit. Iemand een idee?
 
Laatst bewerkt:
Het is gelukt! De fout zat inderdaad in de Nothing.
Ik heb het nu zo gedaan:

Set c = .Find(strDatum, LookIn:=xlValues, LookAt:=xlWhole)
If Not c Is Nothing Then

Bedankt voor de hulp!!
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan