Avatar billede bejstrup Juniormester
25. april 2005 - 07:44 Der er 5 kommentarer og
1 løsning

Låse textcelle

Hej, E
Jeg har en brugerflade, hvor brugeren har mulighed for at taste en dato. Jeg vil gerne sikre mig:
at brugeren indtaster det rigtige datoformat.
at brugeren ikke kan rette datoen men kun læse datoen, hvis den dato der står i forvejen er ældre end NU(). Textcellen skal altså låses så man kun kan læse hvad der står i den men ikke rette den. Det er godt nok to spørgsmål, så jeg håber jeg bliver tilgivet :-)
Avatar billede b_hansen Novice
25. april 2005 - 08:48 #1
Svaret på dit ønske hedder Datavalidering.

Data -> Datavalidering

Herinde sætter du Tillad til Dato.
Data sættes til "Større end eller lig med"
Startdato sættes til =NU()
Avatar billede bejstrup Juniormester
25. april 2005 - 08:52 #2
Der kan jeg jo ikke i skrive VB kode!
Avatar billede bejstrup Juniormester
25. april 2005 - 10:30 #3
Jeg har overvejet løse det på en fusket måde ved at lave både en textBox og en Label:
IF range("A1")=> NU() Then
Label= False & TextBox= True
IF Range ("A1")< NU() Then
Label= True & TextBox= False
End IF
Avatar billede sjap Praktikant
25. april 2005 - 10:53 #4
Prøv evt.

I et modul skriver du

Public DatoFelt As Date


I ThisWorkbook skriver du

Private Sub Workbook_Open()
    DatoFelt = Worksheets("Ark1").Range("B4")
End Sub


og i dit ark med datofeltet skriver du

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

If Target.Address = "$B$4" Then
    If DatoFelt > Now() Then
        If Not Target.Value > #1/1/2000# Then
            Range("B4") = DatoFelt
        End If
    Else
        Range("B4") = DatoFelt
    End If
End If

End Sub
Avatar billede sjap Praktikant
25. april 2005 - 10:56 #5
Den sidste Sub bør nok ændres, så DatoFelt variablen opdateres, hvis indtastningen godkendes:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

If Target.Address = "$B$4" Then
    If DatoFelt > Now() Then
        If Target.Value > #1/1/2000# Then
            DatoFelt = Range("B4")
        Else
            Range("B4") = DatoFelt
        End If
    Else
        Range("B4") = DatoFelt
    End If
End If

End Sub
Avatar billede bejstrup Juniormester
25. april 2005 - 11:01 #6
Super :-)
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