04. december 2007 - 18:09Der er
19 kommentarer og 1 løsning
Visual Basic hjælp
Hej alle
Jeg har oprettet et Excel "kartotek" hvor Ark1 er et "kopi" ark, som jeg kopiere som skabelon til øvrige ark, alt efter hvor mange jeg skal bruge.
"kopi" arket indeholder temmelig mange koder og jeg vil så gerne vide om man ikke kan lave det så koderne kommer til at ligge overordnet, så alle arkene bruger den samme kode.
Jeg kan selvfølgelig kopiere koderne for hvert ark, men så bliver filen hurtigt for stor, så håber på lidt hjælp.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Du kan også vælge at gemme din kode i en Excel add-in, så du ikke har koden liggende i dine filer. Det kan gøre det meget nemmere at opdatere/ændre koden, hvis der skulle være behov for det.
jlemming: Jeg har prøvet at smide koderne ind under de to steder du nævner, men de virker ikke efterfølgende. Tror at jeg gør noget forkert i "ThisWorkbook"
word-hajen: Det lyder smart, hvordan gør man så lige det ?
mpd: De refererer kun til cellerne i arket hvor de ligger. Har prøvet at ligger dem ind i "module", men de virker ikke efterfølgende.
Du skal selvfølgelig sørge for at rette din kode, så den stemmer med, at det er ActiveWorkbook osv., at koden skal reagere på.
Hvis du danner en toolbar til valg af din kode, vil jeg anbefale, at du gemmer som en add-in. Gøres i dialogboksen Gem som - vælg add-in/tilføjelsesprogram som filtype. Vær opmærksom på, at hvis du ikke kører Office 2007, vil stien i dialogboksen ændre sig, når du vil gemme som en add-in. Hvis det er dig alene, der skal bruge funktionerne, er det selvfølgelig ok at placere filen der (den foreslår nemlig en add-ins folder på din pc), men hvis det er en fil, som flere skal bruge, er det ikke det rigtige sted.
Når filen er gemt som add-in/tilføjelsesprogram, skal du tilføje den som add-in/tilføjelsesprogram. Mener at det er i Tools/Funktioner - Add-ins/tilføjelsesprogrammer (medmindre du kører 2007; så skal du via Office-knappen, Excel-indstillinger/options osv.)
Hvis du ikke danner en toolbar, er det måske bedre at beholde dit eksisterende filformat (men kun indeholdende kode) og placere filen i Excels alternative startfolder. På den måde bliver den åbnet automatisk, når du åbner Excel. Skjul evt. filen i folderen; så ser du den ikke i Excel, men du har adgang til koden.
Private Sub Forrige_Click() ActiveSheet.Previous.Select End Sub Private Sub Gem_Click() FileName = "Genladnings oversigt" ThisWorkbook.SaveAs FileName End Sub Private Sub Indexknap_Click() Sheets("Index").Select End Sub Private Sub Næste_Click() ActiveSheet.Next.Select End Sub Private Sub Printer_Click() Me.PrintOut End Sub Private Sub CommandButton223Rem_Click() [F15] = "Tikka" [F19] = "T3 Varmint" [F23] = ".223 Rem." [F27] = "5,6 x 45" End Sub Private Sub CommandButton300WSM_Click() [F15] = "Remington" [F19] = "700 SPS" [F23] = ".300 WSM" [F27] = "7,62 x 54" End Sub Private Sub CommandButton308Win_Click() [F15] = "" [F19] = "" [F23] = ".308 Win." [F27] = "7,62 x 51" End Sub Private Sub CommandButton264SM_Click() [F15] = "" [F19] = "" [F23] = ".264 SM" [F27] = "6,5 x 55" End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Våben If [F15] = Empty Then [F19] = "" [F23] = "" [F27] = "" End If
'Projektil If [Q15] = Empty Then [Q19] = "" [Q27] = "" End If
'Krudt If [AB15] = Empty Then [AB19] = "" [AB27] = "" End If
'Hylster If [AM15] = Empty Then [AM19] = "" End If
'Fænghætte If [AX15] = "CCI 200" Then [AX19] = "Large Rifle" End If If [AX15] = "CCI 200" Then [AX27] = "5.2" End If If [AX15] = "CCI 250" Then [AX19] = "Mag Large Rifle" End If If [AX15] = "CCI 250" Then [AX27] = "6.0" End If If [AX15] = "CCI 400" Then [AX19] = "Small Rifle" End If If [AX15] = "CCI 400" Then [AX27] = "3.4" End If If [AX15] = Empty Then [AX19] = "" [AX27] = "" End If
Jeg har ombestemt mig, de skal ligge er modules-modulx, hvor makroerne ligger, og så skal kan de kun kaldes som makroer, enten med genvejstaster eller som forms knapper hvor der er en makro assignet til. Kontrolelemeter knapper kan ikke bruges
Det kan godt være, at det lyder voldsomt, men det er faktisk ikke så svært :-) Jeg hjælper gerne step-by-step. Du kan jo f.eks. prøve med en lille test-excel-fil først.
Hmm... jeg er godt nok ikke den store haj i det her, men for at lette tingene lidt (for mig selv) :o) kan man så ikke lave nedenstående kode, i samme fil under thisworkbook eller et modul, så det virker på flere ark ad gangen og i så fald, hvordan skal koden så skrives?
Private Sub CommandButton300WSM_Click() [F15] = "Remington" [F19] = "700 SPS" [F23] = ".300 WSM" [F27] = "7,62 x 54" End Sub
Læg dine koder under modules-module1 (der hvor makro koder ligger, hvis bibliotektet ikke findes, skal du optage en makro først)
fjern "Private" i overskriften, således: sub CommandButton300WSM_Click() [F15] = "Remington" [F19] = "700 SPS" [F23] = ".300 WSM" [F27] = "7,62 x 54" End Sub
Du skal oprette din knapper som en forms, vælg view,toolsbar,forms (vis,værktøjslinie,formularer), tegn knap, højre klik på knap, assign makro, vælg din kode, luk.
Knapperne har jeg fået på plads og de virker bare perfekt.
Men jeg har nogle celler hvor jeg indtaster noget data og når de celler svarer overens med det jeg har angivet i koden, så indsætter den selv noget data i nogle andre celler.
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If [Q15] = "Hornady V-Max" And [Q27] = "35" Then [F45] = ".109 BC" [Q45] = ".100 SD" [AM37] = "V-Max" End If If [Q15] = Empty Or [Q27] = Empty Then [F45] = "" [Q45] = "" [AM37] = "" End If End Sub
Det er ikke en knap, så kan den også ligges over i module? og hvordan skal den evt. så skrives?
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range) If [Q15] = "Hornady V-Max" And [Q27] = "35" Then [F45] = ".109 BC" [Q45] = ".100 SD" [AM37] = "V-Max" End If If [Q15] = Empty Or [Q27] = Empty Then [F45] = "" [Q45] = "" [AM37] = "" End If End Sub
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.