I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Jo den er fin nok. Jeg har kun skrevet en enkelt linie der formatterer knappen.
I 2den With linie skal stå noget lignende:
With TempForm.codemodule Line = .countoflines .insertlines Line + 1, "Sub cmdGemNavn_Click()" .insertlines Line + 2, ""
...som er taget fra en anden With. Forskellen er at NyKnap ligger direkte i arket. Det gør den eksemplet her ikke. Det ligger i en uForm og det har jeg ikke haft problemer med.
Det er også ret nyt for mig. Der var ikke rigtig noget hos MS som jeg på nuværende stade kan bruge. Jeg lægger en form under knapperne istedet. Det har jeg da fået til at virke før. Tak for interessen, superjap!
brynil -> hvad er det præcis du vil lave ? Så vidt jeg kan se, er der du er ved at lave, automatisk at generere og indsætte en kode til knappen, hver gang din kodestump køres . Er det virkelig meningen? eller vil du bare lave kode til en knap. Der er stor forskel her.
Sorry bak - jeg har været helt væk. Det jeg er ude efter er at kunne køre en 'installation' af et regneark og i den forbindelse, generere koden til knapper der er placeret på selve arket.
Jeg har ikke haft problemer med v hj af kode at danne forme med listbokse, knapper osv, som kan køres selvstændigt. Så sku jeg til at lave permanente knapper på selve arket, der kan kalde disse, men har ikke været istand til at finde en måde til at skrive kode til andet end et modul.
Fex bruger jeg dette:
Set NewTextBox = TempForm.designer.Controls.Add("forms.textbox.1") With NewTextBox .Top = 10 .Left = 50 .Width = 100 .Height = 20 .Name = "txtNavn" End With
With TempForm.codemodule Line = .countoflines .insertlines Line + 1, "Sub cmdGemNavn_Click()" .insertlines Line + 2, "" .insertlines Line + 3, "'trim det indtastede til brug i range" .insertlines Line + 4, "Dim NytNavn, trimNytNavn, FindHvad As String" .insertlines Line + 5, "Dim Placering, i, x As Integer" .insertlines Line + 6, "" .....
Jeg har bare ikke kunnet finde ud af, hvordan jeg gør det samme når jeg skal skrive kode til et element på arket.
Gjordet det dig lidt klogere? - Jeg er efterhånden selv i tvivl om jeg er blevet det.
Det jeg nævnte for superjap om at lave det med en bagvedliggende for gav et andet problem. Så ku jeg ikke tilgå selve arket, medens formen med knapper var fremme. Men det ku måske løses.
superjaps henvisning viste sig ved nærmere eftersyn at indeholde nogle interessante oplysninger om hvordan man kan danne regneark mm fra en tekst-fil. Men er lidt usikker på, om metoden også omfatter knapper o.l. på arket :-)(
Hvis der er nogen forslag er de mere end velkomne. Og hvis der er tale om et større arbejde forøger jeg selvfølgelig points'ne - men først imor'n. 13 timer er squ nok for idag.
Her er mit forslag. Det opretter en knap og en tilhørernde kode i Ark1
Sub AddProcedure2()
Dim VBCodeMod As CodeModule Dim LineNum As Long Dim line Dim but As Object Set but = Sheets("Ark1").OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _ , DisplayAsIcon:=False, Left:=183.75, Top:=97.5, Width:=131.25, Height _ :=27.75) but.Name = "cmdGemNavn"
Set VBCodeMod = ThisWorkbook.VBProject.VBComponents("Ark1").CodeModule With VBCodeMod line = .CountOfLines .InsertLines line + 1, "Sub cmdGemNavn_Click()" .InsertLines line + 2, "" .InsertLines line + 3, "'trim det indtastede til brug i range" .InsertLines line + 4, "Dim NytNavn, trimNytNavn, FindHvad As String" .InsertLines line + 5, "msgbox(""test"")"
..ingen effekt har, så er det lige det jeg har brug for. Takker for det, bak.
Det med navnet har jeg haft problemer med før. Kender du en løsning på det? Bl.a. er det ikke lykkedes mig at ændre navn på en form v hj af kode. Men det er ikke et væsentligt problem. At ændre navn på en knap er mere interessant, for at undgå at skulle beregne navnet ud fra kørslen.
Jo, det burde have en effekt, for det er det der knytter koden og knappen sammen. Uden den linie ville knappens (interne) navn have været CommanButton1 og så vil den ikke køre en sub der hedder Sub cmdGemNavn_Click.
hvis du mener det der skal stå på knappen, kan jeg ikke lige huske hvordan det sættes på, man det er nok noget med Caption.
Hmm - Jeg kører din kode fra et modul og koden oprettes korrekt med cmdGemNavn i Ark1. Egenskaber siger CommandButton1 og der er ingen reaktion ved klik på knappen.
Jeg er ikke helt med nu. Dette fungerer fint for mig. Navnet bliver cmdGemNavn og teksten på knappen bliver Vis Box. Makroen lægges også fint ind i Ark1 og knappen kan køre makroen.
Sub AddProcedure2()
Dim VBCodeMod As CodeModule Dim LineNum As Long Dim line Dim but As Object Set but = Sheets("Ark1").OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False _ , DisplayAsIcon:=False, Left:=183.75, Top:=97.5, Width:=131.25, Height _ :=27.75) but.Name = "cmdGemNavn" but.Object.Caption = "Vis box"
Set VBCodeMod = ThisWorkbook.VBProject.VBComponents("Ark1").CodeModule With VBCodeMod line = .CountOfLines .InsertLines line + 1, "Sub cmdGemNavn_Click()" .InsertLines line + 2, "" .InsertLines line + 3, "'trim det indtastede til brug i range" .InsertLines line + 4, "Dim NytNavn, trimNytNavn, FindHvad As String" .InsertLines line + 5, "msgbox(""test"")"
Set VBCodeMod = ThisWorkbook.VBProject.VBComponents("Ark1").CodeModule
With VBCodeMod Line = .CreateEventProc("Click", Knap.Name) .InsertLines Line + 2, " " .InsertLines Line + 3, "'trim det indtastede til brug i range" .InsertLines Line + 4, "Dim NytNavn, trimNytNavn, FindHvad As String" .InsertLines Line + 5, "msgbox(""test"")" End With Application.VBE.MainWindow.Visible = False Application.ScreenUpdating = True End Sub
Ja - men den ku også køre før, når Knap.Name ikke var med. Det er dén linie der giver problemer, også i denne version. ;-)
Synes godt om
Ny brugerNybegynder
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.