Avatar billede lundjepsen Praktikant
20. november 2007 - 21:49 Der er 14 kommentarer og
1 løsning

MsgBox med 3 eller flere svar muligheder

Så er der endnu et skørt spørgsmål, som jeg håber en kan hjælpe med.

beholdning fortsætter?
-ja, -genfyldes, -nej fjernes, eller?

Kan man stille et dialogboks med 3 eller flere svar muligheder ?
Og hvordan med "if" erne ?


Mvh Lun
Avatar billede word-hajen Nybegynder
20. november 2007 - 21:53 #1
Lav en Userform/dialogboks med valgmulighederne. Hvis der er max. 3 valg, kan du bruge Optionbuttons, ellers bør du lave enten en Listbox eller en Combobox med de respektive valgmuligheder.
Avatar billede luffeladefoged Praktikant
20. november 2007 - 22:11 #2
Eller du kan bruge en "validation-box":
- skriv f.eks. i A1: ja; A2: genfyldes; A3: nej fjernes
- stå i B1 hvis din box skal stå der og - menu - data - validation - og under settings fanen under allow vælg: List - og under source vælg rangen: =$A$1:$A$3 - og OK; så har du din drop down box med de tre tilladte værdier i B2

En if sætning kunne se således ud:
=IF(B1="ja";25;IF(B1="genfyldes";50;IF(B1="nej fjernes";75;"ingen indtastning")))

Hilsen Luffe
Avatar billede lundjepsen Praktikant
20. november 2007 - 22:24 #3
tak for reply begge.
Jeg skal have den flettet ind i en macro som spørger brugeren om beholdning, han har normalt 3 muligheder.. Men kan også være der kommer en 4 mulighed.

Svaret skal derefter registreres og afgøre hvorledes der beregnes i andre områder/ark.
Det kan godt være at ComboBox er det rigtige, skal prøves..

Skriv endelig hvis i har lyst og ideer, pfh tak
21. november 2007 - 20:24 #4
Hvis det afvikles af/i en makro, jeg er absolut på userform/dialogboks løsningen, som smider brugerens valg i en celle, så dine formler kan regne videre på dem.
Avatar billede lundjepsen Praktikant
22. november 2007 - 21:11 #5
Jo, ja...
Kan en kommer et eksempel på en dialogboks med 3 svar muligheder ?
(svar1, svar2, svar3)
Avatar billede luffeladefoged Praktikant
22. november 2007 - 21:40 #6
Hvis du ikke vil bruge en validation box (som jeg synes er meget straight forward at arbejde med) kan du bruge en listbox eller en combobox, forskellen på disse to indbyrdes er jo mere grafisk og forskellen til en validation box er jo at en validation box afleverer den valgte værdi som output, hvor de to andre leverer nummeret i inputlisten af muligheder:1, 2, 3, etc. - som jo ifølge flemmingdahl er lettere at arbejde med i en makro (er ikke selv en ørn til VB).
Jeg ville mene de tre nævnte er dine umiddelbare muligheder.
/ Luffe
Avatar billede word-hajen Nybegynder
22. november 2007 - 21:52 #7
With Me.ComboBox1
    .AddItem "Svar1"
    .AddItem "Svar2"
    .AddItem "Svar3"
End With
22. november 2007 - 22:38 #8
Ind med en Userform1 og på med en combobox og en knap. Du vil nok ikke gemme svaret i celle B5, så tilpas det nødvendige... men her er en ide.

Private Sub CommandButton1_Click()
    With Me.ComboBox1
        If Not .Text = "" Then
            Sheet1.Range("B5").Value = .Text
        End If
    End With
   
    End
End Sub

Private Sub UserForm_Initialize()
    With Me.ComboBox1
        .AddItem "Svar1"
        .AddItem "Svar2"
        .AddItem "Svar3"
    End With
End Sub
22. november 2007 - 22:40 #9
...og her vis du vil have at der skal vælges inden der trykkes på "OK" knappen...

Private Sub CommandButton1_Click()
    With Me.ComboBox1
        If Not .Text = "" Then
            Sheet1.Range("B5").Value = .Text
        Else
            Exit For
        End If
    End With
   
    End
End Sub

... det kan selvfølgelig laves meget lækre, og hvis et valg er vigtigt, så ville jeg også tilføje den kode du kan finde her på min hjemmeside http://www.smartoffice.dk/Tips/LibrarySource.asp?App=Shared&Lib=QueryClose således vil userformen ikke kunne lukkes med krydset øverst i højre hjørne
Avatar billede lundjepsen Praktikant
23. november 2007 - 22:19 #10
Hej flemmingdahl. og Tusinde tak.

Kan godt se noget af funktionen, men hvad med " Exit for"...
er det evt muligt at få det til at fungere med handling direkte (i makroen)
Her et eks.

'Hopper stand

    DlgStatus = MsgBox("forsætter beholdning d.d. ?  ", vbYesNoCancel, " ? stand efer afstemning ?")
   
    If DlgStatus = vbYes Then
    Range("G20:G31").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("P54").Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
   
    If DlgStatus = vbNo Then
    DlgStatus = MsgBox(" genfyldes/aftømmes til opstart beholdning d.d. ? ", vbYesNo, " ? stand efer afstemning ?")
   
    If DlgStatus = vbYes Then
    Range("P20:P31").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("P54").Select
    Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
        False, Transpose:=False
   
    If DlgStatus = vbNo Then
    MsgBox "! ! Du skal selv indtaste !!", 0, "Advarsel"
   
    End If
    End If
    End If
    End If


__________
Er der ikke en mulighed at spørge og udføre hvis svar er ja ??
Avatar billede lundjepsen Praktikant
23. november 2007 - 22:44 #11
Men kan ikke få den overstående til at til at komme med næste MsgBox, hvad er der galt ??
Hvis jeg svare No så sker der ikke vidre...
End If placeret forkert ?

Mvh Lun
23. november 2007 - 23:08 #12
DlgStatus = MsgBox("forsætter beholdning d.d. ?  ", vbYesNoCancel, " ? stand efer afstemning ?")
   
    If DlgStatus = vbYes Then
        Range("G20:G31").Select
        Application.CutCopyMode = False
        Selection.Copy
        Range("P54").Select
        Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
   
    Else
        DlgStatus = MsgBox(" genfyldes/aftømmes til opstart beholdning d.d. ? ", vbYesNo, " ? stand efer afstemning ?")
   
        If DlgStatus = vbYes Then
            Range("P20:P31").Select
            Application.CutCopyMode = False
            Selection.Copy
            Range("P54").Select
            Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
       
        Else
            MsgBox "! ! Du skal selv indtaste !!", 0, "Advarsel"
           
        End If
    End If
Avatar billede lundjepsen Praktikant
25. november 2007 - 13:01 #13
Hej flemmningdahl, endnu engang tak.
Selvfølig ELSE.....
Nu virker den fortræffelig til formålet, da det er mest almindelig at fortsætte beholdning.

Så er der endnu et lille spørgsmål (du har i forvejen fuld fortjent både points, tak og karma -så du må ikke tage dette ilde op)

Er det mulig at definere rækkefølgen på denne afhængig af cellen i Stamdata = "rækkkefølge"?
-og gerne uden formlen bliver alt for kludret.(mit første indskydelse er at starte med endnu et IF og så samme kode + den omvendte..

mvh Lun
25. november 2007 - 18:07 #14
Hej Lun
Jeg er ikke 100% på hvad du mener, men jeg har lavet følgende eksempel, hvor en Boolean (bContinue) bliver true eller false afhængigt af indholdet af en celle, og så er MsgBox'ene flyttet til en funktion, som returnerer brugeren valg... Denne løsning holder kun ved to valg... ved flere ville jeg bruge Enum's

Sub Dims()
    Dim bContinue As Boolean
   
    bContinue = False
    If LCase(Sheet1.Range("A1").Value) = "lund" Then
        bContinue = True
    End If
   
    DlgStatus = DeterminMessageBox(bContinue)
    If DlgStatus = vbYes Then
        Range("G20:G31").Select
        Application.CutCopyMode = False
        Selection.Copy
        Range("P54").Select
        Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
   
    Else
    DlgStatus = Not DeterminMessageBox(bContinue)
   
        If DlgStatus = vbYes Then
            Range("P20:P31").Select
            Application.CutCopyMode = False
            Selection.Copy
            Range("P54").Select
            Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
       
        Else
            MsgBox "! ! Du skal selv indtaste !!", 0, "Advarsel"
           
        End If
    End If
End Sub

Function DeterminMessageBox(ByVal bContinue As Boolean) As String
    Dim sRetVal As String
   
    If bContinue Then
        sRetVal = MsgBox("forsætter beholdning d.d. ?  ", vbYesNoCancel, " ? stand efer afstemning ?")
    Else
        sRetVal = MsgBox(" genfyldes/aftømmes til opstart beholdning d.d. ? ", vbYesNo, " ? stand efer afstemning ?")
    End If

    DeterminMessageBox = sRetVal
End Function
Avatar billede lundjepsen Praktikant
26. november 2007 - 17:31 #15
Hej igen flemmingdahl.
Jo, du har fanget den -Helt rigtig..

Enum - den kender jeg ikke.  Hvordan bruges denne ?
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

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