Avatar billede limic Nybegynder
04. december 2007 - 18:09 Der 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.

Håber det er forståeligt.

Michael
Avatar billede jlemming Nybegynder
04. december 2007 - 18:37 #1
Jooo, dine koder kan ligger under thisworkbook istedet for.

eller under modules-modulx, hvor makroerne ligger
Avatar billede word-hajen Nybegynder
04. december 2007 - 19:45 #2
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.
Avatar billede mpd Nybegynder
04. december 2007 - 20:48 #3
Hvis du i dine koder refererer til det aktuelle ark med navns nævnelse skal du have ændret koden, så den bliver generisk.

Ex. skal du ændre: Sheets("Ark1").Select til nedenstående.

Dim ws As String
ws = ActiveSheet.Name
Sheets(ws).Select

På den måde kan du bruge samme kode i alle ark, hvis koderne placeret i et modul.
Avatar billede limic Nybegynder
04. december 2007 - 21:37 #4
Tak for svar alle 3...

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.

Michael
Avatar billede word-hajen Nybegynder
04. december 2007 - 21:54 #5
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.
Avatar billede limic Nybegynder
04. december 2007 - 22:31 #6
Wauu, det blir´ nok lidt ud over min kunnen, tror at jeg hælder mere til den der med at ligge dem ind i ThisWorkbook.

Men hvordan gøres/skrives det så koderne også virker på alle andre ark ?

Michael
Avatar billede jlemming Nybegynder
05. december 2007 - 08:16 #7
Hvordan kalder du dine makroer?,
Prøv evt. at smide et eksemple på din kode herind
Avatar billede limic Nybegynder
05. december 2007 - 09:27 #8
Her er lidt af det...

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


Michael
Avatar billede jlemming Nybegynder
05. december 2007 - 10:30 #9
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
Avatar billede word-hajen Nybegynder
05. december 2007 - 10:42 #10
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.
Avatar billede limic Nybegynder
05. december 2007 - 12:36 #11
jlemming: Jeg har prøvet at ligge koderne ind under modules-module1, men det virker ikke, mine knapper skal kunne aktiveres ved hjælp af musen.

word-hajen: Meget gerne, er ved at være lidt lost.
Avatar billede jlemming Nybegynder
05. december 2007 - 12:48 #12
Dine knapper kan stadigvæk bruges med musen, det er bare en knap,  der tilhører en makro.
Avatar billede limic Nybegynder
05. december 2007 - 19:35 #13
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

Helst skåret ud i pap, så jeg kan fatte det.

Michael
Avatar billede jlemming Nybegynder
06. december 2007 - 08:22 #14
Ok,
:o)

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.

Så skulle det gerne virke :o)
Avatar billede limic Nybegynder
06. december 2007 - 12:42 #15
Hej jlemming... Det virker, fedt... der er point til dig.

Men skal lige høre om det også kan lade sig gøre med den her kode:

If [Q15] = "Hornady V-Max" And [Q27] = "35" Then
  [F45] = ".109 BC"
  [Q45] = ".100 SD"
  [AM37] = "V-Max"
End If

så den selvfølgelig kun påvirker det ark man står i, men virker på alle ark?

Michael
Avatar billede jlemming Nybegynder
06. december 2007 - 13:05 #16
Jeg tror det nemmeste er hvis det du tager en kopi af den knappen

højre klik,kopi indsæt herefter på de ark du ønsker, så skulle de virke med det samme. koden skal ikke ændres

en anden mulighed er genvejstast til makroen
Avatar billede limic Nybegynder
06. december 2007 - 13:30 #17
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?

Michael
Avatar billede jlemming Nybegynder
06. december 2007 - 13:58 #18
Ja, det var jo noget andet

Prøv dette:

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
Avatar billede limic Nybegynder
06. december 2007 - 14:20 #19
Du er fan** en gutter mand :o) det virker helt perfekt.

Det har jeg bare bøvlet med i lang tid, så super mange tak for hjælpen.

Smid lige et svar så du kan få dine point.

(I´m a happy man)

Michael
Avatar billede jlemming Nybegynder
06. december 2007 - 14:29 #20
Velbekomme, Jeg lærte også noget :o)
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