Avatar billede gladhund Nybegynder
22. juni 2010 - 09:39 Der er 14 kommentarer og
1 løsning

Lokation

Kære eksperter,

Jeg har brug for at placere et Word-objekt er bestemt sted i et worksheet. Jeg kan optage en makro og flytte det der hen, og så får jeg koden:

    ActiveSheet.Shapes("Object 58").Select
    Selection.Copy
    ActiveSheet.Paste
    Selection.ShapeRange.IncrementLeft -11.25
    Selection.ShapeRange.IncrementTop 88.5
    Selection.ShapeRange.IncrementTop 0.75
    Selection.ShapeRange.IncrementTop 0.75
    Selection.ShapeRange.IncrementLeft 0.75

Er der en måde at gøre det på, at man kan bestemme netop det sted man vil have objektet placeret, få "koordinaterne" og så indsætte dem i koden i stedet?
Avatar billede gladhund Nybegynder
22. juni 2010 - 10:20 #1
Fx hvis man kunne sige "Centreret i celle B4" eller noget der ligner ;)
Avatar billede store-morten Ekspert
22. juni 2010 - 15:50 #2
Prøv med: 

    ActiveSheet.Shapes("Object 58").Select
    Selection.Copy
    Range("B4").Select
    ActiveSheet.Paste
    Selection.ShapeRange.IncrementLeft -11.25
    Selection.ShapeRange.IncrementTop 0.75

"Centreret i celle B4"

Tror jeg ikke man kan?
Avatar billede store-morten Ekspert
22. juni 2010 - 15:54 #3
Range("B4").Select

Skal måske være:
Range("B4").Activate
Avatar billede excelent Ekspert
22. juni 2010 - 21:24 #4
Denne indsætter  objektet's øverste venstre hjørne i cellens øverste venstre hjørne

Sub BullsEye()
With ActiveSheet.Shapes(("Object 58")
  .Top = Range("B4").Top
  .Left = Range("B4").Left
End With
End Sub

Og denne indsætter  objektet's øverste venstre hjørne midt i cellen - horisontal & vertikal

Sub BullsEyeCenter()
With ActiveSheet.Shapes(("Object 58")
  .Top = Range("B4").Top + Range("B4").Height / 2
  .Left = Range("B4").Left + Range("B4").Width / 2
End With
End Sub
Avatar billede gladhund Nybegynder
23. juni 2010 - 15:57 #5
Flot :)! Tak for svarene. Jeg tester lige og vender tilbage...
Avatar billede gladhund Nybegynder
23. juni 2010 - 16:09 #6
Med en modifikation tror jeg, at jeg kan bruge dit forslag, excelent:

Lige nu vælger din kode mit "skabelon" objekt og sætter det ind på en fast plads. Jeg har dog brug for, at det bliver KOPIEN af det objekt, der bliver sat ind (se min kode øverst). Kan man det?

Objektet der skal indsættes vil jo hver gang jeg kører koden få 1 nummer højere som navn. Fx første gang "Object 58+1" osv. Men det kender du sikkert en løsning på... :)
Avatar billede excelent Ekspert
26. juni 2010 - 15:48 #7
Hvis du kun har et objekt når du kører koden, så kan denne anvendes, ellers skal jeg vide noget mere om dit projekt

Sub BullsEye()
ActiveSheet.Shapes(1).Select
Selection.Copy
ActiveSheet.Paste
With Selection
  .Top = Range("B4").Top
  .Left = Range("B4").Left
End With
End Sub
Avatar billede gladhund Nybegynder
26. juni 2010 - 16:50 #8
Det er jo nærmest perfekt :). Der er mange (x) word-objekter, men det er jo heldigt at når skabelonen bliver kopieret og kopien indsat, så bliver kopien automatisk selected! Så man behøver ikke forholde sig til, at den har et nummer højere end den senest indsatte kopi. Jeg har lavet den første linje i din kode om til:

ActiveSheet.Shapes("Object 96").Select

... og så virker det :).

Mange tak for hjælpen og smid endelig et svar!
Avatar billede gladhund Nybegynder
26. juni 2010 - 16:54 #9
Måske lige en lille sidst ting... :).

Nu sidder objektet i cellen øverst til venstre. Kan man sætte et par linjer ind, hvor man kan korrigere objektet lidt til højre og ned også - lidt ligesom i min kode øverst? Jeg kan ikke få det til virke med de konkrete linjer efter at with sætningen er kommet ind...
Avatar billede gladhund Nybegynder
26. juni 2010 - 17:00 #10
... eller så er det måske netop store-mortens forslag jeg egentlig skal bruge?
Avatar billede gladhund Nybegynder
26. juni 2010 - 17:06 #11
Undskyld alle de spredte kommenteringer... Men det er nødvendigt kan jeg se først at få objeketet fikseret indsat FØR det rykkes et andet sted hen. Med store-mortens forslag skifter placeringen, hvis man flytter skabelonen - det gør det ikke med excelents forslag. Så hvis man kan bruge excelents forslag og så rykke lidt på objektet efter det er indsat i cellens hjørne, så er det perfekt...
Avatar billede excelent Ekspert
26. juni 2010 - 17:24 #12
Sub BullsEye()
ActiveSheet.Shapes(1).Select
Selection.Copy
ActiveSheet.Paste
With Selection
  .Top = Range("B4").Top + 2 ' <-- skift til passende tal
  .Left = Range("B4").Left + 2 ' <-- skift til passende tal
End With
End Sub
Avatar billede gladhund Nybegynder
26. juni 2010 - 17:31 #13
Smukt... mange tak :)
Avatar billede excelent Ekspert
26. juni 2010 - 17:55 #14
velbekom
Avatar billede store-morten Ekspert
26. juni 2010 - 18:00 #15
Sub førsteForslag()
ActiveSheet.Shapes("1").Select
    Selection.Copy
    Range("B4").Select
    ActiveSheet.Paste
    Selection.ShapeRange.IncrementLeft 2
    Selection.ShapeRange.IncrementTop 2
End Sub
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