Keresés

Új hozzászólás Aktív témák

  • Mutt

    senior tag

    válasz csferke #38209 üzenetére

    Szia,

    Megelőztek...

    Egy DO-LOOP ciklusban addig pörgünk amíg jó a bevitt érték vagy mégsem-et nem nyomnak.
    A nagybetűsítésnél pedig engedékenyek vagyunk; ha vmiért jó karaktert kisbetűvel írták akkor is elfogadjuk de már nagybetűvel mentjük el.

    Sub bevitel()
    Dim xpos, ypos, Prompt, Title, Default, MyValue
    Dim correct As Boolean
    Prompt = ""
    Title = "ADATBEVITEL"
    xpos = 5000
    ypos = 5800

    ActiveCell.Offset(0, 1).Select
    Default = ""
    Prompt = "Pesticid felhasználhatósága" + (Chr(13)) + (Chr(13)) + "H - RR - F - I - A - R - L - N - O"
    Do
    MyValue = Application.InputBox(Prompt, Title, Default, xpos, ypos, Type:=2)
    Select Case UCase(MyValue)
    Case "H", "RR", "F", "I", "A", "R", "L", "N", "O"
    correct = True
    ActiveCell = UCase(MyValue)
    Case Else
    correct = False
    End Select
    Loop Until correct Or MyValue = False

    End Sub

    Fferivel egyetértve a legegyszerűbb megoldás a data validation (érvényesítés), mert ahhoz nem kell makrót írni.

    üdv

  • Fferi50

    Topikgazda

    válasz csferke #38209 üzenetére

    Szia!

    Egyrészt miért kellene ehhez külön form,
    Másrészt természetesen makróban is megoldható a bevitel vizsgálata:
    Beírás előtt megnézed, hogy az érték megfelelő-e. Ha nem, akkor ismét bevitel szükséges.
    Viszont ehhez ciklusba kell tenni a bevitelt:
    Do While True
    Prompt = "Pesticid felhasználhatósága" + (Chr(13)) + (Chr(13)) + "H - RR - F - I - A - R - L - N - O"
    MyValue = InputBox(Prompt, Title, Default, xpos, ypos)
    Select Case myValue
    Case "H", "RR", "F", "I", "A", "R", "L", "N", "O"
    ActiveCell.Value = myValue
    Exit Do
    Case Else
    MsgBox "nem ok"
    End Select
    Loop

    Üdv.

Új hozzászólás Aktív témák

Hirdetés