Avatar billede blolsen Juniormester
09. marts 2014 - 16:31 Der er 3 kommentarer og
1 løsning

hjælp til interaktiv userform

Hej

Jeg har et Excel ark med følgende kolonner:

- Afdelingslokalitet
- Afdeling niveau 1
- Afdeling niveau 2
- Afdeling niveau 3
- År
- Måned
- Ugedag
- time
- Antal senge normal periode
- Formelkolonne (laver en beregning på antallet af senge i en normal periode.
- År
- Måned
- Ugedag
- time
- Antal senge ferie periode
- Formelkolonne (laver en beregning på antallet af senge i en ferie periode.

etc.. der er ca. yderligere 10 kolonner

Det jeg gerne vil, var et oprettet en userform, hvor jeg vælger en given afdelingslokalitet (kolonne 1), hvorefter resten af kolonnerne i den række, hvor afdelingslokaliteten er automatisk bliver vist i userformen. Herefter kan jeg rette eventuelle data og gemme dem i arket. Indtastes en ny afdelingslokalitet skal det være muligt at oprette den via userformen.

Fandt et eksempel på nettet, som gør meget af det jeg efterspørger. http://www.excel-easy.com/vba/examples/interactive-userform.html

Der er dog et par udfordringer:

- Afdelingslokaliteten er bogstaver, ikke tal som i eksemplet
- Eksemplet behandler kun 3 kolonner, hvilket ikke er nok i mit tilfælde

Så hvordan kommer jeg videre, hvis jeg
- bruger bogstaver i stedet for tal (evt. vist i en listbox)
- Har mere end 3 kolonner og har brug for at springe nogen over, som ikke skal vises og kunne rettes (her tænkes på formelkolonnerne ovenfor

Eksemplet fra nettet


Private Sub Label3_Click()

End Sub
----------
Private Sub UserForm_Initialize()

TextBox1.SetFocus

End Sub
--------------
Private Sub TextBox1_Change()

GetData

End Sub
----------
Private Sub CommandButton1_Click()

EditAdd

End Sub
---------
Private Sub CommandButton2_Click()

ClearForm

End Sub
----------
Private Sub CommandButton3_Click()

Unload Me

End Sub

-------



Og formlerne i modulet:



Option Explicit

Dim id As Integer, i As Integer, j As Integer


Sub GetData()

If UserForm1.TextBox1.Value <> "" Then
    i = 0
    id = UserForm1.TextBox1.Value
   
    Do While Cells(i + 1, 1).Value <> ""
   
        If Cells(i + 1, 1).Value = id Then
            For j = 2 To 3
                UserForm1.Controls("TextBox" & j).Value = Cells(i + 1, j).Value
            Next j
        End If
       
        i = i + 1
       
    Loop
Else
    ClearForm
End If

End Sub

----------------
Sub ClearForm()

For j = 1 To 3
    UserForm1.Controls("TextBox" & j).Value = ""
Next j

End Sub

----------
Sub EditAdd()

Dim emptyRow As Long, flag As Boolean
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1

flag = False
i = 0
id = UserForm1.TextBox1.Value

Do While Cells(i + 1, 1).Value <> ""

    If Cells(i + 1, 1).Value = id Then
        flag = True
        For j = 2 To 3
            Cells(i + 1, j).Value = UserForm1.Controls("TextBox" & j).Value
        Next j
    End If
   
    i = i + 1
   
Loop

If flag = False Then
    For j = 1 To 3
        Cells(emptyRow, j).Value = UserForm1.Controls("TextBox" & j).Value
    Next j
End If

End Sub
Avatar billede store-morten Ekspert
09. marts 2014 - 20:27 #1
Måske den indbyggede Formular kan bruges:

Marker en celle i din tabel, og kør denne makro:
Sub Vis_Formular()
    ActiveSheet.ShowDataForm
End Sub


Kolonner der ikke må rettes, kan med fordel "låses"

Se:http://gupl.dk/708296/
Avatar billede blolsen Juniormester
10. marts 2014 - 14:50 #2
Hej igen jeg fandt til information ud af, selv at løse følgende Problemstillinger:

1. I den orginale formel - se ovenfor kunne man kun bruge tal, når man valgte dataene ud fra id'et i tekstboks 1. men ved at ændre 
Dim id As Integer, i As Integer, j As Integer
til
Dim id As String, i As Integer, j As Integer
når datene skulle hentes, kan jeg nu bruge både bogstaver og tal

2. jeg havde behov for at udvide antallet af kolonner. Dette gjorde jeg ved at ændre kolonnedefinitionen fra  "For j = 2 To 3"
til  eksempelvis For j = 2 To 7, som udvider til 7 kolonner.
Avatar billede blolsen Juniormester
10. marts 2014 - 14:53 #3
Hej Store-morten - jeg fandt ud af at låse de felter, som jeg ikke skulle bruge i properties vinduet, hvilket løser mit tredje spørgsmål:-)


Så send mig et svar, så overfører jeg pointene.
Avatar billede store-morten Ekspert
10. marts 2014 - 16:13 #4
Ok
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