Avatar billede bille_1970 Nybegynder
29. november 2005 - 16:26 Der er 12 kommentarer og
2 løsninger

Makro knap hvor referancen flyttes med knappen - er det muligt?

Kan du hjælpe?

Mit problem er at jeg ikke kan få referencen i Excel til at følge med min udskriftknap, når denne kopiers (og det gør den rigtigt mange gange):

Min makro pt:
Sub PrintCheckList41()
    Range("B7:C52").Select
    Selection.PrintOut Copies:=1, Collate:=True
    Range("B14").Select
End Sub

Mvh
Morten Bille
29. november 2005 - 16:50 #1
Du kan ikke kopiere en knap med reference til en bestemt makro - hver knap betragtes om unik. Sorry, but that's life.
Avatar billede bak Forsker
29. november 2005 - 16:51 #2
Hvis jeg forstår det rigtigt kan den ikke finde makroen igen eller åbner det gamle ark og kører makroen.

Det undgår du ved at benytte knappen fra kontrolelementer istedet for den fra Formularer.

Indsæt en knap fra Kontrolelementer.
Højreklik på den og vælg vis kode
indsæt så linierne fra din makro i denne sub, således at den kommer til at se således ud

Private Sub CommandButton1_Click()
  Range("B7:C52").Select
  Selection.PrintOut Copies:=1, Collate:=True
  Range("B14").Select
End Sub

Denne kode vil nu altid følge arket, også hvis det kopieres til andre filer
29. november 2005 - 16:59 #3
Ja, det kan jo være svært at vide hvad der kopieres...

Lille revidering af mit svar er: hvis du kopierer knapper af typen kontrolelementer, så følger en bestemt makrohenvisning ikke med, men det gør den hvis du bruger knappen fra Formularer.

Så kopierer du hele ARK eller blot KNAPPER ?
Avatar billede bak Forsker
29. november 2005 - 17:03 #4
Ja, okey flemming, jeg kan nu også se at det kan forståes som om han gerne vil have makroen til at hænge fast når kun knappen kopieres. Det kan man ikke, medmindre man placerer koden i fx. person.xls
29. november 2005 - 17:07 #5
det afhænger af om knappen kopieres fra en excel fil til en anden eller om det blot er i mellem ark i samme excel fil - hvis det er i samme fil kan det gøres med Formularknapper.... men måske 'bille_1970' kan uddybe kopieringsønskerne..
Avatar billede bille_1970 Nybegynder
29. november 2005 - 17:32 #6
Hej Flemmingdahl og bak tak for jeres indsats!

Jeg prøver lige at præcisere problemet.

Hvis min print knap f.eks. står i celle A1 og har tilknyttet nedenstående makro:
Sub PrintCheckList41()
    Range("B7:C52").Select
    Selection.PrintOut Copies:=1, Collate:=True
    Range("B14").Select
End Sub

Hvis jeg kopierer min print knap til celle A2 så
Skal den gerne opfatte det som (ligge 1 til):
Sub PrintCheckList41()
    Range("B8:C53").Select
    Selection.PrintOut Copies:=1, Collate:=True
    Range("B15").Select
End Sub
Uden at jeg skal ind og rette i referencerne.

Så det jeg søger er variable referencer som følger med knappen. Ved i hvordan man gør?
29. november 2005 - 17:45 #7
Ok - din makro skal være klog og vide hvilken knap der kalder... den er lidt sjov
Avatar billede bille_1970 Nybegynder
29. november 2005 - 17:58 #8
Ja så sjovt synes jeg nu ikke det er:-)jeg har arbejdet med det længe nu. De kan heller ikke løse det hos Helpdesk på mit arbejde.

Har engang brugt løsningen men kan desværre ikke få adgang til det pågælende regneark mere:-( Løsningen var vist rimelig simpel lidt lige som $ angivelsen for faste referencer i cellerne.
29. november 2005 - 18:19 #9
tror ikke der er mange Helpdesk der kan svare på det, men her er en ide. Se andre tips og triks her http://www.smartoffice.dk/Tips/LibraryIndex.asp?App=All

Det forudsætter at du bruger knapperne fra Formular værktøjslinien.

Public Sub PrintCheckList41()
    Dim objSHP As Shape
    Dim lButtonRow As Long

    ' Find knappens række nummer
    Set objSHP = Sheet1.Shapes(Application.Caller)
    lButtonRow = objSHP.TopLeftCell.Row

    ' Udskriv en antal celler i en bestemt matrix udfra knappen række
    Range("B" & CStr(lButtonRow + 6) & ":C" & CStr(lButtonRow + 51)).Select
    Selection.PrintOut Copies:=1, Collate:=True
    Range("B" & CStr(13)).Select
End Sub
29. november 2005 - 18:20 #10
lille ændring
Set objSHP = Sheet1.Shapes(Application.Caller)

skal være
Set objSHP = Shapes(Application.Caller)
eller
Set objSHP = Worksheets("Ark1").Shapes(Application.Caller)
Avatar billede bille_1970 Nybegynder
29. november 2005 - 19:03 #11
Øv, øv kan du få den til at køre? Men jeg kan snart ikke tage mere af din tid!

Jeg vælger "Button" fra "Forms"-værktøjslinien men det kører ikke heller ikke efter at jeg har prøvet med de to ændringer af linie:Set objSHP = Worksheets("checklists").Shapes(Application.Caller)
 

Public Sub Button1_Click()
'Public Sub PrintCheckList41()
    Dim objSHP As Shape
    Dim lButtonRow As Long

    ' Find knappens række nummer
  Set objSHP = Worksheets("checklists").Shapes(Application.Caller)

    lButtonRow = objSHP.TopLeftCell.Row

    ' Udskriv en antal celler i en bestemt matrix udfra knappen række
    Range("B" & CStr(lButtonRow + 6) & ":C" & CStr(lButtonRow + 51)).Select
    Selection.PrintOut Copies:=1, Collate:=True
    Range("B" & CStr(13)).Select
End Sub
29. november 2005 - 19:10 #12
jeg laver lige en lille demo efter aftensmaden
29. november 2005 - 20:41 #13
Sådan - download eksemplet her (husk spørgsmålsnummeret) http://www.smartoffice.dk/Tips/Eksperten/Index.asp
Avatar billede bille_1970 Nybegynder
30. november 2005 - 08:59 #14
flemmingdahl er fantstisk

han har lavet præcis den løsning jeg søgte!

Vh
Morten Bille
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