Avatar billede systek Nybegynder
19. oktober 2004 - 16:15 Der er 8 kommentarer og
1 løsning

Validering ved dobbeltklik

Jeg anvender Workbook_SheetBeforeDoubleClick eventen til at kalde en inputbox, hvori jeg indtaster data til den aktuelle celle, det fungerer ok, men jeg har tilsyneladende ikke datavalidering af mit input til arket når denne event anvendes til at fylde data ind i excel.

Hvad kan jeg gøre for at validere data fra en inputbox ?

Jeg har 2 forskellige typer validering. Både af heltal inden for et interval og kontrol af streng-længder.
Avatar billede sjap Praktikant
19. oktober 2004 - 16:38 #1
Er inputboxen sat op til at håndtere henholdsvis heltal og strenge? Hvis den ikke er saqt op til noget, returner InputBox altid en streng (uanset om du skriver et tal). Måske er det derfor di validering ikke virker?
Avatar billede sjap Praktikant
19. oktober 2004 - 17:16 #2
Hvis ovenstående ikke virker, så kan nedenstående måske bruges som inspiration

Sub Workbook_SheetBeforeDoubleClick()
Dim vBoxInput As Variant

vBoxInput = Application.InputBox("Skriv noget!")
On Error Resume Next
If IsNumeric(vBoxInput) Then
    vBoxInput = Val(vBoxInput)
    If vBoxInput > 12 And vBoxInput < 44 Then
        If Fix(vBoxInput) = vBoxInput Then
            Debug.Print vBoxInput & " er et heltal mellem 12 og 44"
        Else
            Debug.Print vBoxInput & " er et decimaltal mellem 12 og 44"
        End If
    End If
Else
    If Len(vBoxInput) < 50 Then
        Debug.Print vBoxInput & " er en streng med " & Len(vBoxInput) & " tegn"
    End If
End If

End Sub

Du skal selvfølgelig lige rette alle Debug.Print handlingerne, til det som du gerne vi have, der skal ske.
Avatar billede systek Nybegynder
20. oktober 2004 - 08:41 #3
Hej Sjap,
Næ... jeg har ikke lavet noget specielt vedr. opsætning af inputboxen... hvordan gør man det ?
Avatar billede sjap Praktikant
20. oktober 2004 - 15:32 #4
Jeg er ikke helt sikker, men i nyere versioner kan man vist angive om inputtet skal være f.eks. et tal eller en tekststreng (man har dog ikke den mulighed i min gode gamle version 97).

Prøv at slå op i hjælpen (altså visual basic hjælpen) under "Funktionen InputBox".

Men det hjælper jo i øvrigt ikke noget, hvis du ikke på forhånd ved om brugeren vil indtaste et tal eller en streng.
Avatar billede systek Nybegynder
20. oktober 2004 - 16:01 #5
Hvis jeg er nødt til at kode mig ud af dette, har jeg forestillet mig at anvende de valideringskreterier der er tilknyttet cellen, derved vil jeg vide om input skal opfattes som streng eller heltal...

Nå jeg vil rode lidt videre med dette, der må kunne findes en enkel løsning på det....

Jeg er nået et stykke af vejen... men det virker ikke med celler der er indstillet til vilkårlig værdi...

Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim Integ, Integ2 As Integer
' Makro3 Makro
' Makro indspillet 13-10-2004 af Finn Dahl Andersen



If Not ActiveCell.Validation Is Nothing Then


    If Not ActiveCell.Validation.Type <> xlValidateWholeNumber Then

    MsgBox ActiveCell.Validation.Formula2 & ActiveCell.Validation.Formula1


    Integ = ActiveCell.Validation.Formula1
    Integ2 = ActiveCell.Validation.Formula2
 
            If Integ > ActiveCell.Value Then
            MsgBox "nedre ok"
            End If
            If Integ2 > ActiveCell.Value Then
            MsgBox "øvre ok"
            End If
    Else


    MsgBox "no val"
   
    End If
   
End If

End Sub
Avatar billede sjap Praktikant
20. oktober 2004 - 18:58 #6
Hvor er inputboxen så blevet af?

Så vidt jeg lige kan se, så svarer din funktion til datavalideringsfunktionen - bare med den forskel, at du prøver at aktivere den med et dobbeltklik. Jeg er ikke lige med på, hvad det er, du forsøger at lave nu.
Avatar billede sjap Praktikant
20. oktober 2004 - 19:22 #7
Jeg har kigget lidt på din kode, og har skrevet den på en lidt anden måde, som du måske kan bruge som inspiration.

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Excel.Range, Cancel As Boolean)

On Error GoTo errorhandler
If ActiveCell.Validation.Type = xlValidateWholeNumber Then
    If ActiveCell.Value > ActiveCell.Validation.Formula1 Then
        MsgBox "Heltal - Nedre grænse (" & ActiveCell.Validation.Formula1 & ") OK"
    End If
    If ActiveCell.Value < ActiveCell.Validation.Formula2 Then
        MsgBox "Heltal - Øvre grænse (" & ActiveCell.Validation.Formula2 & ") OK"
    End If
Else
    If ActiveCell.Validation.Type = xlValidateTextLength Then
        If Len(ActiveCell.Value) > Val(ActiveCell.Validation.Formula1) Then
            MsgBox "Tekstlængde - Nedre grænse (" & ActiveCell.Validation.Formula1 & ") OK"
        End If
        If Len(ActiveCell.Value) < Val(ActiveCell.Validation.Formula2) Then
            MsgBox "Tekstlængde - Øvre grænse (" & ActiveCell.Validation.Formula2 & ") OK"
        End If
    Else
        MsgBox "Ingen validering"
    End If
End If

Exit Sub
errorhandler:

End Sub
Avatar billede systek Nybegynder
21. oktober 2004 - 09:18 #8
Hov... ja inputtet er da væk... scriptet var, som du er inde på en erstatning for valideringen, den skal naturligvis kombineres med inputboksen... Problemet var at jeg vha dobbeltklik ikke kunne validere data... det kan jeg nu.. tak for hjælpen, ligger du et svar?
Avatar billede sjap Praktikant
21. oktober 2004 - 14:53 #9
Det er da ok :0)
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