Avatar billede peterhansen1982 Nybegynder
01. marts 2006 - 11:11 Der er 5 kommentarer og
1 løsning

Oprettelse af macro til kvartal, halvår og fuldt år

Hej,

Jeg er ved at lave et lille budget program og kunne godt tænke mig en macro der kunne udfylde noget for mig automatisk. F.eks. lad os sige at jeg har en fast udgift / indtægt som er det samme hver måned så vil jeg gerne kunne taste det ind i et mdr. og så trykke på en en kombination så kommer det automatisk ind i resten af månederne. Sådan en funktion kunne jeg godt tænke mig for kvartal, halvt år og fuldt år. Det skal virke ligemeget i hvilket måned man aktiverer den.
Avatar billede supertekst Ekspert
01. marts 2006 - 12:25 #1
Det skulle nok kunne lade sig gøre - vender tilbage...
Avatar billede supertekst Ekspert
01. marts 2006 - 13:35 #2
I xls-filen - ThisWorkbook:
Sub workbook_activate()
    Load UserForm1
    UserForm1.Show 0
End Sub

I Userformener koden følgende:
Dim periode
Private Sub CommandButton1_Click()                  'OK
Dim p
    For p = 0 To periode - 1
        Cells(ActiveCell.Row, ActiveCell.Column + p) = Val(TextBox1)
    Next p
   
    Frame1.Enabled = False
    CommandButton1.Enabled = False
End Sub
Private Sub CommandButton2_Click()
    Unload UserForm1
End Sub
Private Sub OptionButton1_Click()
    CommandButton1.Enabled = True
    periode = 3
End Sub
Private Sub OptionButton2_Click()
    CommandButton1.Enabled = True
    periode = 6
End Sub
Private Sub OptionButton3_Click()
    CommandButton1.Enabled = True
    periode = 12
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If TextBox1 <> "" Then
        If IsNumeric(TextBox1) = True Then
            Frame1.Enabled = True
        Else
            Frame1.Enabled = False
            CommandButton1.Enabled = False
        End If
    Else
        Frame1.Enabled = False
        CommandButton1.Enabled = False
    End If
End Sub
Private Sub UserForm_activate()
    Frame1.Enabled = False
    CommandButton1.Enabled = False
End Sub

P.t. er betingelsen, at den celle i budgettet, hvor beløbet skal overføres til -er den aktuelle. Udfra valget - kopieres beløbet tilde 3, 6 eller 12 følgende celler til højre herfor. Userform er "Modeless" - d.v.s. du kan arbejde i regnearket - medens denne er åben.

Userformen indeholder:
Textbox1: beløbet
Frame1: ramme med 3 optionbuttons
samt to commandbuttons - OK og Afslut


Hvis du vil have hele .xls-filen -så mail til: pb@supertekst-it.dk
Avatar billede peterhansen1982 Nybegynder
01. marts 2006 - 13:42 #3
Tak virker
Avatar billede supertekst Ekspert
01. marts 2006 - 13:44 #4
OK - det var hurtigt - så får du et svar
Avatar billede peterhansen1982 Nybegynder
06. marts 2006 - 14:35 #5
Hej, jeg har nu fået indsat ovenstående kode. Har dog i mellemtiden fundet ud af at jeg ønsker følgende.

Hvis det er 1 år skal der kun indsættes i markerede felt (periode = 1)

Hvis det er ½ år skal der indsættes i markeret felt og i feltet 6 mdr. efter (eks. januar og juli) og ikke noget imellem.

Hvis det er kvartal skal der indsættes i markeret felt og i feltet 3 mdr. efter osv. (eks. januar, april, juli og september).

Hvordan kan man løse det i perioder? eller på en anden måde Meget dejlig macro den her ellers...

giver gerne 50 point til den der kan give et svar.
Avatar billede supertekst Ekspert
07. marts 2006 - 09:09 #6
Dim periode
Private Sub CommandButton1_Click()                  'OK
Dim p, spring, antal
    If CheckBox1.Value = False Then
        For p = 0 To periode - 1
            Cells(ActiveCell.Row, ActiveCell.Column + p) = Val(TextBox1)
        Next p
    Else
        If periode = 12 Then
            antal = 1
            spring = 1
        Else
            spring = periode
            antal = (12 / periode) * spring
        End If
       
        For p = 1 To antal Step spring
            Cells(ActiveCell.Row, ActiveCell.Column + p - 1) = Val(TextBox1)
        Next p
    End If
   
    Frame1.Enabled = False
    CheckBox1.Value = False                        'her kan fjernelse af "flueben" elimineres efter opdatering
    CommandButton1.Enabled = False
End Sub
Private Sub CommandButton2_Click()
    Unload UserForm1
End Sub
Private Sub OptionButton1_Click()
    CommandButton1.Enabled = True
    periode = 3
End Sub
Private Sub OptionButton2_Click()
    CommandButton1.Enabled = True
    periode = 6
End Sub
Private Sub OptionButton3_Click()
    CommandButton1.Enabled = True
    periode = 12
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If TextBox1 <> "" Then
        If IsNumeric(TextBox1) = True Then
            Frame1.Enabled = True
        Else
            Frame1.Enabled = False
            CommandButton1.Enabled = False
        End If
    Else
        Frame1.Enabled = False
        CommandButton1.Enabled = False
    End If
End Sub
Private Sub UserForm_activate()
    Frame1.Enabled = False
    CheckBox1.Value = False
    CommandButton1.Enabled = False
End Sub
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