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

selectie tot blanco waarde kopieren middels vba code

Status
Niet open voor verdere reacties.

MatthijsE

Gebruiker
Lid geworden
5 feb 2009
Berichten
15
Hallo,

Ik loop momenteel tegen een probleem aan, namelijk het volgende :

Ik gebruik 2 documenten waarvan ik van een bepaald document de a kolom wil inlezen, hier gebruik ik de volgende code voor:
Code:
wb.ActiveSheet.Range("A2:A300").Copy
    ThisWorkbook.ActiveSheet.Range("A2").PasteSpecial Paste:=xlValues
Deze code kopieert de range A2 tot en met a300, dit werkt goed, alleen ben ik op zoek naar de methode om het einde niet voor te definieren maar te laten inlezen tot de 1e waarde die de code tegenkomt vanaf cel A65336. Daarvoor heb ik de volgende code gevonden
Code:
Range("A2:A" & [A65536].End(xlUp).Row).Copy Destination:=Range("D10:D" & [A65536].End(xlUp).Row)
Ook deze code werkt goed, echter alleen binnen het zelfde document. Als ik de code vertaal naar hetgene wat ik wil hebben wordt er slechts 1 waarde op cel a2 getoont, terwijl het bronbestand in de A kolom meer dan 200 waarde bevat.

De code die ik momenteel heb en niet goed functioneert is de volgende:
Code:
wb.ActiveSheet.Range("A2:A" & [A65536].End(xlUp).Row).Copy
    ThisWorkbook.ActiveSheet.Range("A2").PasteSpecial Paste:=xlValues


Hoe kan het zo zijn dat ik slechts enkele waarde krijg terwijl ik een output van meer dan 200 regels verwacht ???

Waar bega ik een misstap ?

Matthijs
 
Vermijd select en activate in VBA (dus ook activesheet en activell)

Code:
with wb.Sheets("Blad2")
  .Range("A2:A" & .[A65536].End(xlUp).Row).Copy ThisWorkbook.Sheet(Blad7").Range("A2")
End with

of

Code:
with wb.Sheets("Blad2")
  .cells(2,1).resize(.cells(.rowscount,1).End(xlUp).Row-1).Copy ThisWorkbook.[Blad7!A2]
End with
 
Of maak v/h te kopieëren gedeelte een dynamisch bereik met bv. de naam Bereik
De code wordt dan

Code:
With wb.Sheets("Blad1")
    .Range("Bereik").Copy ThisWorkbook.Sheets("Blad1").[A2]
End With

Mvg

Rudi
 
Wat ik niet snap is:

Dat als de range bepaald is zoals in deze code

Code:
wb.ActiveSheet.Range("A2:A300").Copy
    ThisWorkbook.ActiveSheet.Range("A2").PasteSpecial Paste:=xlValues

Het kopieren van alle waarden van de A rij wel goed gaat, maar als je onderstaande code gebruikt die kijk vanaf de "1e gevulde cel naar boven" het fout gaat.

Code:
wb.ActiveSheet.Range("A2:A" & [A65536].End(xlUp).Row).Copy
    ThisWorkbook.ActiveSheet.Range("A2").PasteSpecial Paste:=xlValues

De 1e code maakt ook gebruk van
select en activate in VBA (dus ook activesheet en activell)

Wie kan me dit uitleggen waarom de code zoals 1 wel goed functioneert (vaste range) en code 2 (variabele(gevonden waarde in rij A (vanaf cel 65536) tot A2)) niet werkt ?
 
Het volgende heb ik gevonden op de Miscrosoft site

Hallo allen,

Voor geïtresseerden op de volgende site staat veel info over mijn euvel.

http://support.microsoft.com/kb/291308

Hier heb ik de volgende code voor aaneengesloten waarden binnen een rij :
Code:
ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown)).Select

voor niet aaneengesloten waarden binnen een rij:
Code:
ActiveSheet.Range("a1",ActiveSheet.Range("a65536").End(xlUp)).Select

Toch bedankt voor jullie input.

Matthijs
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan