hjælp til interaktiv userform
HejJeg 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
