19. oktober 2004 - 16:15Der 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.
Mød TrackMan og Veo på Computerworld Cloud & AI Festival og hør, hvordan tech ændrer måden, vi træner og udvikler talent – fra skolebold til The Masters.
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?
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.
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.
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
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.
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
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?
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.