Avatar billede Mads32 Ekspert
01. marts 2019 - 10:08 Der er 9 kommentarer og
4 løsninger

Hvorfor ikke "Select"

I mange af de små makroer, som jeg opretter anvender jeg select.

Jeg har i et indlæg set, at man ikke bør anvende select, men skrive en anden kommando. Jeg fik ikke noteret hvad.

Et lille eksempel på min anvendelse:

    Sheets("Farver").Select
    Range("L9:L11").Select
    Selection.Copy
    Sheets("Extra_kort").Select
    Range("L9").Select
    ActiveSheet.Paste
Avatar billede finb Ekspert
01. marts 2019 - 10:13 #1
with  Sheets("Farver")
    .Range("L9:L11").Copy
end with

with    Sheets("Extra_kort")
    .Range("L9").Paste
end with
01. marts 2019 - 10:18 #2
Select bedre Excel og vælge en celle og så udføre sin handling - for dette lille job betyder det ingen ting, men hvis der skal arbejdes mere flere "select's" så kommer det til at betyde en del...

Sheets("Farver").Range("L9:L11").Copy
Sheets("Extra_kort").Range("L9").Paste
Avatar billede Daffodil Professor
01. marts 2019 - 12:14 #3
Sammenlign brugen af Select som at løbe en 100 meter. Hver gang du anvender en Select skal du løbe 100 meter.
Omsat til dit eksempel, så løber den lille excelpointer fra VBA koden over i excelarker for at finde dit faneblad (Sheets("Farver")) herefter løber den tilbage i VBA koden og læser den næste linje for at finde ud af hvad den skal gøre, så løber den tilbage igen til fanebladet og finder celler og markere dem og kopiere for derefter at vende tilbage igen osv. Med andre ord der kan spares meget tid som #2 angiver, hvis det er en mere kompleks VBA kode.
Da jeg lærte om VBA fik vi en lille opgave med at lade excel tælle fra nul til en million, koden skulle stoppe når den fandt tallet 999999. Vores første kodning gav en tid på ca 27 sekunder og da vi sluttede af med at fjerne selecter var vi under 0,01 sekund
Avatar billede Mads32 Ekspert
01. marts 2019 - 18:48 #4
Tak for alle indlæg.

I mange af de små programmer jeg har lavet, har jeg udelukket anvendt "select".

I mange programmer 30 - 50 gange., så end en gang mange tak
Avatar billede store-morten Ekspert
01. marts 2019 - 18:52 #5
#1 og #2 kode giver fejl hos mig?

Så mit forslag er:
Sub Copy_to_Destination()

Worksheets("Farver").Range("L9:L11").Copy _
    Destination:=Worksheets("Extra_kort").Range("L9")

End Sub
Avatar billede store-morten Ekspert
01. marts 2019 - 19:03 #6
Har du mange "select" kan der spares tid ved at slå skærm opdatering fra ;-)
Avatar billede Mads32 Ekspert
01. marts 2019 - 19:41 #7
Hej Store-Morten
Jeg var lidt hurtig til at takke for indlæggene.
Da jeg teste gav de også fejl ved mig

Linjerne med "Paste" giv fejl i begge forslag.

Jeg vil senere prøve dit forslag
01. marts 2019 - 20:13 #8
Ja, linierne skal hedde
    Sheets("Farver").Range("L9:L11").Copy
    Sheets("Extra_kort").Range("L9").PasteSpecial xlPasteAll


Jeg bruger nærmest aldrig paste, da jeg ikke bryder mig om brug af udklipsholderen, men skal man have rammer og alt med, så er det selvfølgelig nemt... skal man f.eks. kun have værdierne med og/eller formler med, så kunne det se således ud (kun værdier, så skift Formula ud med Value)
Sub AlternatvCopy()
    Dim rCell As Range
    Set rCell = Sheets("Farver").Range("L9:L11")
    Sheets("Extra_kort").Range("L9").Resize(rCell.Rows.Count, rCell.Columns.Count).Formula = rCell.Formula
End Sub
Avatar billede store-morten Ekspert
01. marts 2019 - 20:56 #9
Sub Copy_Values_to_Destination()
    Worksheets("Farver").Range("L9:L11").Copy
    Worksheets("Extra_kort").Range("L9").PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
End Sub
Avatar billede store-morten Ekspert
01. marts 2019 - 21:08 #10
Eller bare hente værdierne
Sub Hent_værdier()
Worksheets("Extra_kort").Range("L9:L11") = _
Worksheets("Farver").Range("L9:L11").Value
End Sub
Avatar billede Mads32 Ekspert
03. marts 2019 - 10:26 #11
Hej alle forslagsstillere.

Jeg takker endnu en gang for de mange forslag, jeg har fået; men desværre kan jeg ikke få nogle af forslagene til at fungere.

Jeg er ikke nogen "HAJ" til VBA, så jeg laver mine makroer ved hjælp af makrooptageren, og tilretter derefter når der skal indsættes simpe betingelse.

I vedlagte test ønsker jeg at overføre farvede celler fra ark "Farver" til ark "Extra_kort" og til ark M:kort.
Mine optage makroer fungerer som de skal, men det er ikke lykkes for mig, at få mine makroer til at virke, når jeg erstatter mine optagelser med jeres forslag.

Er der nogle af jer, der vil have ulejlighed med at få det til at virke. og eventuelt forklare hvad der er galt.

På forhånd tak.

https://www.dropbox.com/s/blcgreveiy2iqm1/Medlemskort_test_farver.xlsm?dl=0
Avatar billede store-morten Ekspert
03. marts 2019 - 14:05 #12
Avatar billede Mads32 Ekspert
07. marts 2019 - 15:26 #13
Hej Store Morten

Tak for dit indlæg.

Jeg har prøvet at kopiere dine formler over i en anden fil, til nogle makroer der er optaget. Men makroerne kan ikke køre.

Jeg roder lidt videre. men igen tak
Jeg markerer som løsning, så andre ikke bruger tid på problemet
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

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