Avatar billede c_skytte Nybegynder
26. juli 2007 - 13:15 Der er 12 kommentarer og
1 løsning

Kopiere en Commandbutton??

Jeg vil gerne kopiere en Commandbutton1 ved at trykke på Commandbutton2, men det kan jeg åbenbart ikke!
Jeg ville gerne bruge noget VBA kode til at løse problemet!

Den nye Commandbutton skal hedde "Commandbutton3" og indeholde det samme kode som "Commandbutton1" gør!

Fortsætter jeg med at trykke på Commandbutton2, tilføjes knapperne: "Commandbutton4", "Commandbutton5", "Commandbutton6 osv., ligeledes med samme kode som "Commandbutton1"
Avatar billede gider_ikke_mere Nybegynder
26. juli 2007 - 16:54 #1
Du kan bruge denne kode:

Option Explicit
Sub testme()

    Dim OLEObj As OLEObject
    Dim wks As Worksheet
   
    Set wks = ActiveSheet
   
    With wks
        With .Range("a1:b2")
            Set OLEObj = .Parent.OLEObjects.Add _
                          (ClassType:="Forms.CommandButton.1", _
                          Link:=False, DisplayAsIcon:=False, _
                          Left:=.Left, Top:=.Top, _
                          Width:=.Width, Height:=.Height)
        End With
       
        With .Parent.VBProject.VBComponents(.CodeName).CodeModule
            .InsertLines .CreateEventProc("Click", OLEObj.Name) + 1, _
                "Msgbox ""Hi"""
        End With
    End With
       
End Sub


Du skal have givet tilladelse til Visual Basic projektet under "pålidelige kilder":

"Sådan aktiveres pålidelig adgang til Visual Basic-projekter:

Peg på Makro i menuen Funktioner, og klik derefter på Sikkerhed.
Marker afkrydsningsfeltet Giv adgang til Visual Basic-projekt under fanen Pålidelige kilder.
Yderligere oplysninger om at bruge metoden finder du ved at søge efter metodenavnet i Hjælp til Visual Basic."
Avatar billede c_skytte Nybegynder
01. august 2007 - 13:02 #2
Damn! ...jeg synes det ikke er SÅ ligetil alligevel!!  :o(

Er der nogen mulighed for jeg kan sende min lille excel fil til en der VIRKELIG ved hvad VBA-kodningen handler om??

Jeg skal nok inkludere en udførlig beskrivelse af hvad der skal laves; men det er IKKE ret meget, set med en "Super-koders" øjne!!  ;o)
Avatar billede gider_ikke_mere Nybegynder
01. august 2007 - 14:33 #3
Kan du ikke bare forklare hvad problemet er?
Avatar billede c_skytte Nybegynder
01. august 2007 - 15:36 #4
Jo, det kan jeg vel godt!?

Jeg er ved at lave en Open Item List et ark hvor brugerene kan se deres opgaver og der tilhørende deadlines!

Arket er delt op således:


Item  |  Opgaveområde  |  Opgave  |  osv osv...
----------------------------------------------------------
100  |                  |            |
101  |                  |            |
102  |                  |            |
-----------------
| Indsæt linie  |  [knap]
-----------------

------------------------
| Indsæt Item-Gruppe  |  [knap]
------------------------

Når jeg trykker på "Indsæt linie"; indsættes en linie lige oven over bare +1. fx hvis der trykkes på kanppen "Indsæt linie" herover sker dette (linie 103 bliver tilføjet):

Item  |  Opgaveområde  |  Opgave  |  osv osv...
----------------------------------------------------------
100  |                  |            |
101  |                  |            |
102  |                  |            |
103  |                  |            |
-----------------
| Indsæt linie  |  [knap]
-----------------

------------------------
| Indsæt Item-Gruppe  |  [knap]
------------------------


Når jeg så trykker på "Indsæt Item-Gruppe" skulle dette gerne ske:
Gruppen 200 bliver tilføjet og der kommer en ny "Indsæt linie"-knap der kan tilføje nye linier til 200-gruppen (201, 202, 203 osv)!!



Item  |  Opgaveområde  |  Opgave  |  osv osv...
----------------------------------------------------------
100  |                  |            |
101  |                  |            |
102  |                  |            |
-----------------
| Indsæt linie  |  [knap]
-----------------
200  |                  |            |
-----------------
| Indsæt linie  |  [knap]
-----------------

------------------------
| Indsæt Item-Gruppe  |  [knap]
------------------------

Trykker jeg så een gang til på "Indsæt Item-Gruppe" kommer gruppen 300, ligeledes med en "Indsæt linie" nedenunder....

Håber det hjalp?

Jeg aner ikke om der kan tilføjes billeder..?? det ville jo nok ha været nemmere at forstå!!!!!!!!
Avatar billede gider_ikke_mere Nybegynder
01. august 2007 - 17:18 #5
Jeg ville ikke lave det med commandbuttons:

Indsæt en commandbutton i dit ark
Private Sub Indsaet_Gruppe_Click()
Indsaet_Ny_Gruppe
End Sub

Module1:
Sub Indsaet_Ny_Gruppe()
Dim Val, Celle As Variant, L As Long, Ny As Variant
NyGruppe = Range("A65536").End(xlUp).Row + 1
For I = 1 To NyGruppe - 1
    If IsNumeric(Range("A" & NyGruppe - I)) And Range("A" & NyGruppe - I) <> "" Then
        Celle = Range("A" & NyGruppe - I)
        If Len(Celle) = 3 Then
            Val = Left(Range("A" & NyGruppe - I), 1)
            Nuller = "00"
        End If
        If Len(Celle) = 4 Then
            Val = Left(Range("A" & NyGruppe - I), 2)
            Nuller = "00"
        End If
       
        Pos = NyGruppe - I + 3
       
        Exit For
    End If
Next
If Celle = "" Then
    Range("A1").Value = 100
    Celle = 90
    Pos = 1
    Nuller = "00"
End If
L = Len(Celle)
Ny = Val + 1 & Nuller
Range("A" & Pos).Value = Ny
Range("A" & Pos + 1).Select
ActiveCell.Value = "Indsæt ny linie"
ActiveCell.Name = "INDSAET" & Ny

End Sub

I ark1 modulet:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
On Error Resume Next
CelleNavn = Target.Name.Name
   
If Left(CelleNavn, 7) = "INDSAET" Then
    NyVal = ActiveCell.Offset(-1, 0).Value + 1
    Selection.Insert Shift:=xlDown
    ActiveCell.FormulaR1C1 = NyVal
    ActiveCell.Range("B1").Select
End If
End Sub

Du skal dermed blot dobbeltklikke på "Indsæt ny linie"-cellen for at indsætte en ny linie.
Avatar billede c_skytte Nybegynder
01. august 2007 - 17:47 #6
Kanon, tester imorgen!
Avatar billede c_skytte Nybegynder
02. august 2007 - 10:37 #7
Hmm..??

Jeg er lidt i tvivl om hvor jeg skal indsætte dette:
-------------
I ark1 modulet:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
On Error Resume Next
CelleNavn = Target.Name.Name
   
If Left(CelleNavn, 7) = "INDSAET" Then
    NyVal = ActiveCell.Offset(-1, 0).Value + 1
    Selection.Insert Shift:=xlDown
    ActiveCell.FormulaR1C1 = NyVal
    ActiveCell.Range("B1").Select
End If
End Sub
-------------

Du skriver "I ark1 modulet:"
...hvor finder jeg det henne?? (..spurgte amatøren!)
Avatar billede gider_ikke_mere Nybegynder
02. august 2007 - 15:18 #8
Når du går i VBA editoren i et tomt ark, har du ingen Module1 o.s.v. men blot

Ark1(Ark1)
Ark2(Ark2)
Ark3(Ark3)
ThisWorkbook

Dobbeltklik på Ark1(Ark1). Indsæt koden.

Det svarer til det samme modul du ender i, hvis du indsætter et kontrolelement i et ark, f.eks en CommandButton1 i ark1, og dobbeltklikker på den i designtilstand. Det modul du dermed kommer ind i, er Ark1(Ark1).
Avatar billede gider_ikke_mere Nybegynder
02. august 2007 - 15:28 #9
Avatar billede c_skytte Nybegynder
02. august 2007 - 15:39 #10
Du er en gud!!  :o)

TAK!!
Avatar billede c_skytte Nybegynder
02. august 2007 - 15:40 #11
Men-æææh??

...hvordan får du lige de der 175 point?
Avatar billede gider_ikke_mere Nybegynder
02. august 2007 - 15:47 #12
Ved at jeg putter dette svar og at du accepterer det.
Avatar billede gider_ikke_mere Nybegynder
02. august 2007 - 16:03 #13
Tak for point.
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