Avatar billede martin_moth Mester
29. maj 2009 - 01:43 Der er 9 kommentarer og
1 løsning

Excel VBA: Kopiere celler fra et sheet til et andet

vil kopiere celler fra et sheet til et andet - men optager jeg en macro, får jeg en masse kode som ikke er sååååå god...

Fx.

Sheets("fra").Select
    Range("A16").Select
    Range(Selection, Selection.End(xlDown)).Select
    Range("A16:A370").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("til").Select
    Range("J7").Select
    Selection.Paste

for jeg har forskellige sheetnavne og forskellige celler der skal kopieres

Ville meget hellere noget i retning af : (i, j, k har passende værdier)

Worksheets(4).Range(Cells(j, 1), Cells(k, 1)).copy
Worksheets(2).Cells(l, 1).paste

så jeg slipper for alt det .select osv.

Men det virker ikke - selvom første linje er kopieret direkte fra hjælpen.

Any ideas?
29. maj 2009 - 06:55 #1
Prøv med

Worksheets(4).Range(Cells(j, 1), Cells(k, 1)).copy Destination:=Worksheets(2).Cells(l, 1).paste

Det skal stå på samme linje
Avatar billede martin_moth Mester
29. maj 2009 - 08:20 #2
object doesnt support this property or method... ?
29. maj 2009 - 08:30 #3
Ja, der skal naturligvis stå

Worksheets(4).Range(Cells(j, 1), Cells(k, 1)).copy Destination:=Worksheets(2).Cells(l, 1)
Avatar billede martin_moth Mester
29. maj 2009 - 08:45 #4
så får jeg bare en ny fejl

applicationdefined og orbejctdefined error
29. maj 2009 - 09:04 #5
Så har du fejl et andet sted i koden. Har testet med

Sub test()
    Worksheets(1).Range(Cells(1, 1), Cells(1, 1)).Copy Destination:=Worksheets(2).Cells(1, 1)
End Sub

Der fint kopierer indholdet af A1 fra første arkfane til anden.

hvilke værdier har k, j og i?
Avatar billede martin_moth Mester
29. maj 2009 - 09:21 #6
k, j og i har rigtige værdier - har også forsøgt at "hardcode" med værdier i stedet for i, j, k...

Har lige fået noget virus, måske det der spiller ind - for det virker altså ikke....

har omgået det ved at lave et loop:

ActiveWorkbook.Sheets(2).Cells(k, 10).Value = ActiveWorkbook.Sheets(4).Cells(j, 1).Value
K=K+1
j=j+1

og så lade K loope fra første til sidste række...

Hvis jeg nu fik dit til at virke - hvordan finder man ud af at man kan skrive som du gør - dt står så vidt jeg ser ikke i hjælpen, og det er ikke altid at VBA-editoren i EXCEL foreslår alle de properties osv et object har, når man skriver objectnavn med et punktum efter...

Er det bare mig der ikke kan finde ud af at søge i hjæplen generelt
29. maj 2009 - 09:39 #7
Har du prøvet med min snut kode?

Hvis du skriver

    Dim wks As Worksheet
    Set wks = Worksheets(1)
    wks.Range(Cells(1, 1), Cells(1, 1)).Copy

vil du efter Copy få vist muligheden for at skrive destination:=
Avatar billede excelent Ekspert
29. maj 2009 - 16:53 #8
Sheets(4).Range("A" & j & ":A" & k).Copy Sheets(2).Range("A" & l)
Avatar billede martin_moth Mester
01. februar 2010 - 21:25 #9
Virker. SMid svar :-)
Avatar billede martin_moth Mester
04. juni 2010 - 11:53 #10
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester