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

cel kopieren in Excel met Visual Basic

Status
Niet open voor verdere reacties.

mariannevanh

Terugkerende gebruiker
Lid geworden
14 dec 2004
Berichten
2.133
Ik ben bezig met een scriptje waarin o.a. een opdracht staat om de waarde van een cel met een berekening te kopieren van het ene blad naar het andere.
Op het andere blad wil ik dus alleen de waarde hebben, niet de hele formule van het originele blad.
Ook moet de opmaak NIET worden meegenomen (achtergrond, lijnen).

Oorspronkelijk had ik staan:
-----
Sheets("Blad2").Select
Range("Blad1!A" & X).Copy Cells(T, 1)
-----
maar dit kopieert de opmaak en de formule (waarbij de verwijzingen niet meer kloppen).
(X en T zijn variabele getallen)

Wie helpt?
 
Hoi Guido,

Kopiëren (Copy) is eigenlijk een slechte methode. Begrijpelijk, want als mens doe je zoiets. Maar een computer hoeft niet identiek te werken als een mens. Vandaar dat je Copy maar beter laat vallen.

Ook uw celverwijzingen lijken slordig (Alhoewel daar in feite niets fout aan is). Maar Vermits je met Cells werkt (De beste methode vind ik), zou je dit volledig moeten toepassen.

Enne... niets selecteren. Dit kan hier geen kwaad... maar daar ga je later nog problemen mee krijgen.

Sheets("Blad2").Cells(T, 1).Value = Sheets("Blad1").Cells(X, 1).Value

Luc
 
@Luc,

Is een stukje code van mij uit deze vraag.
Programma 1000 producten.

Zelf kom ik er ook steeds meer achter dat cells veel beter werkt dan range.

De oorspronkelijke code was;
Range("Blad1!A" & X & ":C" & X).Copy Cells(T, 1) ' Kolom A t/m C
Dan wordt het ook duidelijk waarom er range in de code staat

Mocht je toch weer kolom A, B en C willen kopieeren kan dat met een extra lusje;
Dim y
...
For y = 1 To 3 'kolom A t/m C
Sheets("Blad2").Cells(T, y).Value = Sheets("Blad1").Cells(X, y).Value
Next y

Weet je nog een goed VBA boek dat je me kan aanraden om verder met VBA te komen?
 
Laatst bewerkt:
En nogmaals een verbetering.
Let wel dat dit bij kleine programmatjes, of lusjes niet veel invloed heeft.
Maar maak een macro met lusjes van een paar 1000 .... en hij begint merkbaar trager te lopen.
En een macro dient tenslotte toch om saaie, herhalende handelingen uit handen te nemen.


Sheets("Blad2").Cells(T, 1).Resize(1, 3).Value = _
Sheets("Blad1").Cells(X, 1).Resize(1, 3).Value

Luc

ps. Even de les: Navigeren in VBA Excel op m'n website doornemen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan