Avatar billede folj Forsker
15. april 2013 - 13:27 Der er 3 kommentarer og
1 løsning

VBA - Placering af inputbox

Hej Eksperter.

Jeg vil gerne styre hvor min InputBox placeres på brugerens skærm.

    UserInit = UCase(InputBox("Dine Initialer", "Indtast selv...", , Xpos, Ypos))


Mit problem er at jeg gerne vil placere InputBoxen ca. samme sted som den knap der aktiverede makroen.
Hvordan opsnapper jeg placeringen på "Caller" altså knappen der kaldte makroen.

    Set objSHP = Worksheets("MitSkema").Shapes(Application.Caller)

og senere
    Placering = objSHP.TopLeftCell.Address

Men TopLeftCell.Address returnerer cellens addresse, og jeg har jo brug for en XPos og en YPos for at placere min InputBox.
Nogen der kender en metode der kan anvendes? Er det muligt?
Avatar billede kabbak Professor
15. april 2013 - 19:30 #1
du skal bruge CommandButton fra visual basic og ikke dem fra formularer.

I arkets modul

Private Sub CommandButton1_Click()
Xpos = Ark1.CommandButton1.Left * 20 ' måske kan du få det mere nøjagtig, prøv at rette de 20
ypos = Ark1.CommandButton1.Top * 25 ' måske kan du få det mere nøjagtig, prøv at rette de 25

  UserInit = UCase(InputBox("Dine Initialer", "Indtast selv...", , Xpos, ypos))
End Sub
Avatar billede folj Forsker
16. april 2013 - 12:24 #2
@kabbak...
Det første bud med at jeg skal bruge CommandButton fra visual basic og ikke dem fra formularer, kan jeg ikke finde ud af. Du må evt. godt lære mig hvordan jeg indsætter sådan en CommandButton direkte i et sheet.

Jeg klarede et dog med lidt tilretning af din metode, for det kan åbenbart også bruges på knapperne fra formularer, da de også besidder egenskaberne Left og Top:

' først en lille procedure hvor jeg rettede knappens navn til et mere sigende navn. Jeg kunne ikke finde andre måder at ændre knappens navn på, end at afvikle denne VBA. Findes der andre måder?

Sub ReNameButton()
    Sheets("MitSkema").Select

ActiveSheet.Shapes.Range(Array("Button 13")).Name = "Kvitteringsknap"

End Sub


Når det så er gjort (én gang for alle), kan jeg bruge nedenstående i min Kvitterings-procedure:
    Sheets("MitSkema").Select

    Xpos = ActiveSheet.Shapes.Range(Array("Kvitteringsknap")).Left * 20 ' måske kan der være behov for justering, prøv at rette de 20
    Ypos = ActiveSheet.Shapes.Range(Array("Kvitteringsknap")).Top * 25 ' måske kan der være behov for justering, prøv at rette de 25

  UserInit = UCase(InputBox("Dine Initialer", "Indtast selv...", , Xpos, Ypos))


Smart løsning med at trække det fra Left og Top, og så gange med hhv 20 og 25. Det virker bare, og det var ikke nødvendigt at justere yderligere på værdierne.
Smid lige et svar, så er der lidt points til dig.
Avatar billede folj Forsker
18. april 2013 - 11:53 #3
@kabbak.
Det er dig vi venter på...
Smid lige et svar.
Avatar billede kabbak Professor
18. april 2013 - 19:11 #4
et svar
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