Avatar billede lq Nybegynder
15. marts 2006 - 15:12 Der er 17 kommentarer og
1 løsning

Vb vælg destination

Jeg har optaget en makro, der vælger et område og indsætter området et andet sted.

Nu vil jeg gerne have en msgbox, der spørger til destination, hvor selectionen skal indsættes.

Destinationen er i et andet regneark, så det vil være super, hvis jeg kunne klikke på eks. a1 i det ark, hvor selection skal indsættes og makroen så bare gør det. Hvordan gør jeg det?
Avatar billede kabbak Professor
15. marts 2006 - 19:23 #1
Sub Makro1()
    Dim rngInsert As Range
    Set rngInsert = Application.InputBox("Kopier Hvortil ?", Type:=8)
    Worksheets("Ark1").Range("A1:B11").Copy Destination:=rngInsert
End Sub
Avatar billede lq Nybegynder
15. marts 2006 - 20:34 #2
Super! Men hvordan får jeg den til at paste værdier, kildeformattering og kolonnebredde?
Avatar billede oyejo Nybegynder
15. marts 2006 - 20:49 #3
Merk området med data kjør makro
Merk første celle i området som skal ha data, kjør samme makro.
NB! denne makro vil feile hvis ikke målcelle er tom

Sub Makro1()
  If Not IsEmpty(ActiveCell) Then
    Selection.Name = "tmpName"
  Else
    Names("tmpName").RefersToRange.Copy
    Selection.PasteSpecial Paste:=xlPasteAll
    Application.CutCopyMode = False
  End If
End Sub
Avatar billede kabbak Professor
15. marts 2006 - 21:06 #4
Sub Makro1()
    Dim rngInsert As Range
    Set rngInsert = Application.InputBox("Kopier Hvortil ?", Type:=8)
    Worksheets("Ark1").Range("A1:B11").Copy
    rngInsert.PasteSpecial Paste:=xlAll
End Sub
Avatar billede kabbak Professor
15. marts 2006 - 21:10 #5
en lille rettelse

Sub Makro1()
    Dim rngInsert As Range
    Set rngInsert = Application.InputBox("Kopier Hvortil ?", Type:=8)
    Worksheets("Ark1").Range("A1:B11").Copy: rngInsert.PasteSpecial Paste:=xlAll
    Application.CutCopyMode = False
End Sub
Avatar billede oyejo Nybegynder
15. marts 2006 - 21:13 #6
også en lille tettelse fra norge :-)
men kabbaks løsning er nok mere elegant.

Sub Makro1()
  If Not IsEmpty(ActiveCell) Then
    Selection.Name = "tmpName"
  Else
    Names("tmpName").RefersToRange.Copy
    Selection.PasteSpecial Paste:=xlPasteAll
    Selection.PasteSpecial Paste:=xlPasteColumnWidths
    Application.CutCopyMode = False
  End If
End Sub
Avatar billede oyejo Nybegynder
15. marts 2006 - 21:14 #7
tettelse  = rettelse
Avatar billede lq Nybegynder
15. marts 2006 - 21:14 #8
Destinationen kan godt være fyldt.
Avatar billede oyejo Nybegynder
15. marts 2006 - 21:16 #9
da er kabbaks løsning den beste
Avatar billede oyejo Nybegynder
15. marts 2006 - 21:20 #10
hvis ikke må du trykke del når du merker cellen for mottak av data.
at de andre cellene er fyldt gjør ingen ting.
koden må vite om den skal kopiere eller lime inn i merket området
dette skjer slik.
If Not IsEmpty(ActiveCell) Then
Avatar billede lq Nybegynder
15. marts 2006 - 21:26 #11
Jeg er mest tiltalt af Kabbaks løsning, da jeg kun behøver at køre makroen en gang, men xlAll tager alt. Jeg vil kun have værdier og kolonnebredde, hvordan gør jeg det? Det ser ikke ud til at jeg kan bruge oyejo dobbelt pasting - det er det jeg gør idag manuelt.
Avatar billede kabbak Professor
15. marts 2006 - 21:31 #12
Sub Makro1()
    Dim rngInsert As Range
    Set rngInsert = Application.InputBox("Kopier Hvortil ?", Type:=8)
    Worksheets("Ark1").Range("A1:B11").Copy
    rngInsert.PasteSpecial Paste:=xlValues
    rngInsert.PasteSpecial Paste:=xlColumnWidths
    Application.CutCopyMode = False
End Sub
Avatar billede oyejo Nybegynder
15. marts 2006 - 21:35 #13
Hvis copyområet er det samme, er det nok å merke første celle i målområdet
Valget er om man vil merke området eller angi det  i en inputbox

Sub Makro1()   
    Worksheets("Ark1").Range("A1:B11").Copy
    Selection.PasteSpecial Paste:=xlValues
    Selection.PasteSpecial Paste:=xlColumnWidths
    Application.CutCopyMode = False
End Sub
Avatar billede lq Nybegynder
15. marts 2006 - 21:35 #14
<-> det burde jeg kunne have regnet ud. Smidt et svar!
Avatar billede lq Nybegynder
16. marts 2006 - 09:43 #15
Koden ser nu sådan her ud:

Sub Makro1()
    Dim rngInsert As Range
    Set rngInsert = Application.InputBox("Kopier Hvortil ?", Type:=8)
    Selection.Copy
    rngInsert.PasteSpecial Paste:=xlPasteValues
    rngInsert.PasteSpecial Paste:=xlPasteFormats
    rngInsert.PasteSpecial Paste:=xlPasteColumnWidths
    Application.CutCopyMode = False
End Sub

Men den er ikke stabil. Den giver en gang imellem en runtime error 424 i anden linje, den der starter med set.
Avatar billede lq Nybegynder
16. marts 2006 - 13:00 #16
Jeg har fundet ud af, at den kun fejler, når jeg går til en anden projektmappe.
Avatar billede kabbak Professor
16. marts 2006 - 15:07 #17
Prøv at teste denne, den skulle også virker i andre mapper der er indlæst samtidig.

Sub Makro1()
    Dim rngInsert As Range, Sted As String
    Set rngInsert = Application.InputBox("Kopier Hvortil ?", Type:=8)
    Sted = "[" & rngInsert.Parent.Parent.Name & "]" & rngInsert.Parent.Name & "!" & rngInsert.Address
    Selection.Copy
    Range(Sted).PasteSpecial Paste:=xlPasteValues
    Range(Sted).PasteSpecial Paste:=xlPasteFormats
    Range(Sted).PasteSpecial Paste:=xlPasteColumnWidths
    Application.CutCopyMode = False
End Sub
Avatar billede lq Nybegynder
16. marts 2006 - 16:20 #18
Tak Kabbak. Jeg har testet på flere forskellige ark og det virker - bortset fra det ark, som jeg har behov for at kopiere fra. Den siger fortsat objekt required i linje 2. Jeg tror ikke, at der skulle være andet i arket der laver rod.

Jeg synes ikke jeg kan være bekendt at vride mere tid ud af dig for den lave pointsum.Så derfor her er point.
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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