Avatar billede JacobB Juniormester
11. oktober 2023 - 09:51 Der er 10 kommentarer og
1 løsning

Skrift på makroknap bliver større og større

Hej,

Jeg har levet en makroknap, som automatisk sender en mail til nogle modtagere, som er angivet. Alt fungerer perfekt på nær, at selve fonten på knappen vokser hver gang jeg klikker på den, så det til sidst er umuligt at læse, hvad der står.

Hvordan fjerner jeg den bug?

Tak :-)
Avatar billede MaxZpaD Professor
11. oktober 2023 - 10:21 #1
Jeg mener, at denne "bug" knytter sig til kontrolelementer og/eller de tilsvarende ActiveX-objekter.

Jeg har tidligere arbejdet omkring det ved at tilføje kode i makroen, som afslutter med at sætte bredden og højden på knappen til de ønskede størrelser.

Jeg er gået over til at anvende figurer i stedet og så tilknytte makroen dertil. Jeg ved godt, at "tryk-knaps-følelsen" forsvinder, men det er jeg villig til at ofre :-) Til gengæld kan man bruge figur-effekter med skygge osv.
Avatar billede JacobB Juniormester
11. oktober 2023 - 13:07 #2
Øv, men tak for svaret. Jeg er åbenbart ikke den eneste, som døjer med det :-(
Avatar billede MaxZpaD Professor
12. oktober 2023 - 08:54 #3
Øv ja, og jeg har ikke hørt om, at det er blevet udbedret fra Microsofts side af. Men du kan forhindre det med en af de to work-arounds, jeg har nævnt.
Jeg kan godt hjælpe med at tilføje kode i makroen, der sætter højde/bredde og tekststørrelse til det ønskede, hvis du copy/paster makroen her.
Avatar billede JacobB Juniormester
12. oktober 2023 - 09:08 #4
Lyder godt. Jeg er en almindelig bruger uden den store forståelse for makroer, så jeg har faktisk fået ChatGPT til at hjælpe mig med at skrive makroen. Her er den:

Sub SendEmailWithAttachment()
    Dim OutApp As Object
    Dim OutMail As Object
    Dim wsSource As Worksheet
    Dim wsDest As Worksheet
    Dim rngSource As Range
    Dim RecipientList As String
    Dim FilePath As String

    ' Definer kildeark og målark
    Set wsSource = ThisWorkbook.Sheets("Nomination")
    Set wsDest = ThisWorkbook.Sheets("Recipients")

    ' Definer kildeområde (søjler A til I)
    Set rngSource = wsSource.Range("A:I")

    ' Definer stien til den midlertidige Excel-fil
    FilePath = Environ("TEMP") & "\TemporaryFile.xlsx"

    ' Deaktiver advarsler om overskrivning
    Application.DisplayAlerts = False

    ' Kopier data til midlertidig fil
    rngSource.Copy
    Workbooks.Add
    ActiveSheet.Paste
    ActiveWorkbook.SaveAs FilePath
    ActiveWorkbook.Close

    ' Genaktiver advarsler
    Application.DisplayAlerts = True

    ' Definer modtagere fra Recipients, søjle A
    RecipientList = Join(Application.WorksheetFunction.Transpose(wsDest.Range("A1:A" & wsDest.Cells(Rows.Count, 1).End(xlUp).Row).Value), ";")

    ' Opret en Outlook-applikation
    Set OutApp = CreateObject("Outlook.Application")
    Set OutMail = OutApp.CreateItem(0)

    ' Definer filnavnet for den vedhæftede fil
    Dim AttachmentFileName As String
    AttachmentFileName = "Nomination HySynergy.xlsx"

    ' Opret mail
    With OutMail
        .To = RecipientList
        .Subject = "Nomination for HySynergy"
        .Body = "This is Everfuels nomination for HySynergy. The nomination date can be found on the excel sheet"
        .Attachments.Add FilePath, 1, 1, AttachmentFileName
        .Send
    End With
End Sub
Avatar billede JacobB Juniormester
12. oktober 2023 - 09:09 #5
Ups, copy/paste tager ikke tabs med, men du kan nok læse det alligevel :-)
Avatar billede MaxZpaD Professor
12. oktober 2023 - 09:17 #6
Tabs kommer først med, når man refresher siden (af en eller anden grund) :-)

Jeg skal lige høre, om du har én eller flere knapper på arket? Skal være sikker på, det er den rigtige knap, der "manipuleres"
Avatar billede JacobB Juniormester
12. oktober 2023 - 09:24 #7
Kun en :-)
Avatar billede MaxZpaD Professor
12. oktober 2023 - 09:51 #8
Da du indsatte knappen, valgte du så fra gruppen "Kontrolelementer for formular" eller fra gruppen "ActiveX-objekter"?
Avatar billede JacobB Juniormester
12. oktober 2023 - 09:55 #9
ActiveX-objekter
Avatar billede MaxZpaD Professor
12. oktober 2023 - 10:19 #10
Ok - så er vi ved at være der :-)

Først skal vi finde de størrelser, du ønsker. Når knappens størrelse er, som den skal være, så kør denne makro og skriv tallene ned fra den besked-boks, som vises:

Sub sub_ole_obj_get()
    Dim obj As Object
    For Each obj In ActiveSheet.OLEObjects
        If obj.Name Like "CommandButton*" Then
            With obj
                MsgBox "Tekststørrelse = " & .Object.Font.Size & vbNewLine & vbNewLine & _
                      "Knap-bredde = " & .Width & vbNewLine & vbNewLine & _
                      "Knap-højde = " & .Height, , .Name
            End With
        End If
    Next obj
End Sub

Herefter skal du indsætte følgende kode i bunden af din nuværende makro før "End Sub":

    Dim obj As Object
    For Each obj In ActiveSheet.OLEObjects
        If obj.Name Like "CommandButton*" Then
            With obj
                .Object.Font.Size = [skriv ønsket størrelse på tekst]
                .Width = [skriv ønsket bredde f.eks. 100.5]
                .Height = [skriv ønsket højde f.eks. 150.8]
            End With
        End If
    Next obj

Dine værdier/størrelser skal IKKE stå i kantet parentes [ ] men blot lige efter lighedstegnet.
Avatar billede JacobB Juniormester
16. oktober 2023 - 15:48 #11
Perfekt, mange tak! Det virker :-)
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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