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

Klein probleempje met data schrijven in ander werkblad (VBA)

Status
Niet open voor verdere reacties.

nilessss

Gebruiker
Lid geworden
10 jan 2015
Berichten
7
Aan de hand van een validatielijst wil ik data uit een extern bestand wegschrijven in een ander tabblad. Alles lukt, alleen het wegschrijven in een ander tabblad lukt me niet. Zie de bijgevoegde bestanden als werkvoorbeeld.

In "Blad1" staat een validatielijst, wanneer ik daarin waarde "1" selecteer, voert hij de macro "brondata" uit middels "Worksheet_Change(ByVal Target As Range)". Hij schrijft de data met de huidige macro weg op Blad1, dit wil ik niet, dit moet op "Blad2" gebeuren.

De code zoals deze nu werkt:
Code:
Sub Worksheet_Change(ByVal Target As Range)

If Target.Address <> "$A$2" Then Exit Sub
    Select Case Target.Value
        Case "1"
            brondata
        Case Else
            MsgBox "Case else"
    End Select

End Sub


Sub brondata()

Dim objWorkbook As Workbook
Dim i As Integer

Set objWorkbook = Workbooks.Open("Brondata.xls")

For i = 1 To 200
    Cells(i, 3) = objWorkbook.Sheets("Namen").Cells(i + 0, 1)
Next i

objWorkbook.Close

End Sub

Wanneer ik
Code:
Cells(i, 3) = objWorkbook.Sheets("Namen").Cells(i + 0, 1)
vervang voor
Code:
ActiveWorkbook.Sheets("Blad2").Cells(i, 3) = objWorkbook.Sheets("Namen").Cells(i + 0, 1)
dan krijg ik de foutmelding "sub of function niet gedefinieerd". Ik ben al aan het schuiven geweest met de macro 'brondata', maar of ik deze nu aan het werkblad, ThisWorkbook of in een module hang, helaas geen verschil..

Alles moet uiteindelijk werken onder Excel 2003. Wie kan mij helpen met dit probleempje?
 

Bijlagen

Je opent het werkboek "brondata".
Dit is dan het actieve werkbook.
Die benoem je verder in de code als 'Objworkbook'.


In feite schrijf je met deze regel vertaald.
Code:
ActiveWorkbook.Sheets("Blad2").Cells(i, 3) = objWorkbook.Sheets("Namen").Cells(i + 0, 1)
Code:
[brondata.xls]sheets("Blad2").cells(i,3) = [brondata.xls].sheets("namen").cells(i,1)
Waarbij de 0 er uit mag (1+0 =1; 200+0=200)

Je wil van actieve werkboek schrijven naar actieve werkboek.

Maak van Activeworkbook → Thisworkbook.
Code:
thisWorkbook.Sheets("Blad2").Cells(i, 3) = objWorkbook.Sheets("Namen").Cells(i + 0, 1)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan