Just nu i M3-nätverket
Gå till innehåll

Kontrollera värdet från Inputbox


Micke_Sthlm

Rekommendera Poster

Hur kan jag kontrollera att ett värde som matas in i en Inputbox eller liknande följer ett visst format tex ÅÅÅÅMMDD-XXXX för personnummer och tex ÅÅÅÅ-MM-DD för datum?

Vill att användaren ska varnas och "skickas tillbaka" för ny inmatning om fel format skrivs in.

 

Mvh Micke

 

Länk till kommentar
Dela på andra webbplatser

Jag TROR inte att det finns någon motsvarighet till Access Verifieringsuttryck.

Du blir nog tvungen att ställa upp ett antal villkor. T.ex längd, tecken 7 = streck, checksumman i personnummret osv.

 

Datum borde ju gå att skicka till IsDate för att se om det översätts till ett datum i alla fall. Visserligen ett ganska grov test. IsDate är ganska generöst.

 

Exempel där man kollar en textbox "på väg ut"

[color="#0000ff"]Private[/color] [color="#0000ff"]Sub[/color] TextBox1_LostFocus()
[color="#0000ff"]Dim[/color] Testvarde As [color="#0000ff"]String[/color], Test
Test = [color="#0000ff"]False[/color]

Testvarde = Me.TextBox1.Value

[color="#0000ff"]If[/color] Testvarde = [GRÅ]""[/GRÅ] [color="#0000ff"]Then[/color] [color="#0000ff"]Exit[/color] [color="#0000ff"]Sub[/color] [color="#006400"]' eller vill du bråka om tomma?[/color]

Test = IsDate(Testvarde)

[color="#0000ff"]If[/color] Test = [color="#0000ff"]True[/color] [color="#0000ff"]Then[/color] [color="#0000ff"]Exit[/color] [color="#0000ff"]Sub[/color]

Test = [color="#0000ff"]MsgBox[/color]([GRÅ]"Felaktigt datum, Försök igen"[/GRÅ], vbOKCancel, [GRÅ]"UUUUUUHHHHH"[/GRÅ])
[color="#0000ff"]If[/color] Test = vbCancel [color="#0000ff"]Then[/color] [color="#0000ff"]Exit[/color] [color="#0000ff"]Sub[/color]
Me.TextBox1.Activate
[color="#0000ff"]End[/color] [color="#0000ff"]Sub[/color]

 

 

Exempel på ett enkelt personnummertest (bör kompleteras med kontrollsifferstest)

If not(Len(Testvarde) = 11 And _

Mid(Testvarde, 7, 1) = "-" And _

IsNumeric(Mid(Testvarde, 1, 6)) And _

IsNumeric(Mid(Testvarde, 8, 4))) _

Then Exit Sub

 

Du skulle ju kunna dela upp villkoren och fixa felmeddelandet så att det blir tydligare. Men du fattar principen.

 

***La bara dit ett NOT, blir lite mer logiskt då....***

[inlägget ändrat 2006-09-22 09:23:43 av MH2]

Länk till kommentar
Dela på andra webbplatser

  • 3 veckor senare...

Tackar (om än lite sent, har blivit lite dåligt med datortid på senaste tiden...) för ditt svar. Fick lite att klura kring. Kom fram till följande kod för min kontroll av ett ordernummer på formen "xxxx-yyy" där x är ständigt ökande och y:na alltid är tre. "Läggatill" är namn på ett userform.

 

testv = Laggatill.Ordernrbox.Value
If Len(testv) < 5 Then
   MsgBox "Fel format på ordernumret!"
   Exit Sub
Else
End If


le2 = Len(testv) - 2
le3 = Len(testv) - 3
If Not (Mid(testv, le3, 1) = "-") Or _
       IsNumeric(Mid(testv, le2, 3)) = False Or _
       IsNumeric(Mid(testv, 1, le3)) = False Then
           MsgBox "Fel format på ordernumret!"
           Exit Sub
Else
End If

 

Till nästa problem, ha dé gott...

/Micke

 

Länk till kommentar
Dela på andra webbplatser

  • 2 veckor senare...

Jag svarar lite till på min egen tråd om någon letar efter detta någon gång...

 

Hittade ActiveX-kontrollen "Date-Time Picker" som verkar (har inte hårdtestat det direkt) ha någon form av egenkontroll för hur datum skrivs in, dessutom kan man få upp den lilla inbyggda trevliga kalendern och klicka fram det datum man vill ha.

Enkelt att plocka ut datumvärdet ur kontrollen med ".Value".

 

/Micke

 

Länk till kommentar
Dela på andra webbplatser

Hittade ActiveX-kontrollen "Date-Time Picker"

Var/hur hittar du den?

 

Finns den i Excel eller är det något du måste ladda ned eller lägga till på annat sätt?

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

Det är en active-x kontroll, finns under visa->verktygsfält, kontroller, fler kontroller. "Microsoft Date and time picker". Tror den kommer med windows, men det skall jag inte svära på (sp4 låter ju som om den hör till windows2000). Den ser snarast ut som den hör till outlook, men vem vet.

 

TROR den kräver att du kryssar i Microsoft common controls i VBA-editorn, verktyg, referenser. Eller också sköts det automatiskt när man hämtar kontrollen. Orkar inte exprimentera.

 

Det pinsamma är att jag faktiskt använt en gång men glömde bort det när MickeSparr frågade, förlåt.

 

Finns en progressbar också. Det har man ju längtat efter mer än en gång...

 

[inlägget ändrat 2006-10-25 12:19:26 av MH2]

Länk till kommentar
Dela på andra webbplatser

Jag letar och testar och letar och testat och letar och testar men någon Date Time picker hittar jag inte.

 

VBA-fältets flera kontroller tittar jag i - där har jag 225 (!) kontroller och jag börjar undra om denna är överbefolkad. Söker på nätet och finner att den ska finnas i endera den filen eller den filen. Nåja, på MS sidor, http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/datetime/datetime.asp, hittar jag att den ska vara en del av Comctl32.dll. Testar att lägga till den, går inte, och Comctl32.ocx i både VBA-kontrollerna på bladet och som referens i VBA-editorn.

 

Ingenstans ser jag dock skymten av Date Time Picker...

 

Nåja, ingen katastrof men jag undrar varför?

 

Eller ska den inte gå att välja som en grafisk kontroll?

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

Monshi - i verktygsfältet Kontroller, klicka på Fler Kontroller och dubbelklicka på Microsoft Date and Time Picker

 

Länk till kommentar
Dela på andra webbplatser

Monshi - i verktygsfältet Kontroller, klicka på Fler Kontroller och dubbelklicka på Microsoft Date and Time Picker

Den finns inte där...(se bild)

 

Win Xp Home, Excel XP (2002)

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

[bild bifogad 2006-10-25 14:58:12 av Monshi]

878711_thumb.jpg

Länk till kommentar
Dela på andra webbplatser

Win Xp Home, Excel XP (2002)

Jag testade på Excel 2000, under Win2KPro och med version 6.0.80.22 av comctl.ocx (tillagt i referenser i VBA-editorn enbart)

 

 

Länk till kommentar
Dela på andra webbplatser

comctl32.ocx v 6.0.81.5 från system32 foldern i Windows-mappen.

eller som Excel/VBA utrycker det:

Microsoft Windows Commmon Controls 5.0 (SP2)

 

Vad jag än lägger till så verkar inte antalat möjliga val bland "Fler kontroller" öka. Antalat kontroller rapporteras till 225 st.

 

Något är det som är galet men vi behöver inte gräva alltför djupt i det om ni inte vill. Fast det vore en trevlig detalj att ha tillgång till.

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

Nu märkte jag att den kontrollen faktiskt ligger i min More Controls per default, även utan att jag lägger till referensen. Vilken Excel-version har MickeSparr?

 

Länk till kommentar
Dela på andra webbplatser

Nej, my bad. Om jag lägger in en DTP och klickar för att lägga in kod så skapas en automagisk koppling till:

mscomct2.ocx (6.0.88.4). Inget annat.

**********

ursprungligt filnamn=COMCT232.OCX

 

[inlägget ändrat 2006-10-25 16:19:18 av MH2]

Länk till kommentar
Dela på andra webbplatser

Sänd mig en excel-fil med denna kontroll. Nyfiken på vad som då sker.

 

Kanske sända med den ocx-fil som används. Något verkar fattas. Som ni kanske vet är jag inte helt blåbär på hur sånt här fungerar så för mig är det ett mysterium varför jag inte finner denna kontroll. Mysterium är till för att lösas.

 

Hur många kontroller har ni för övrigt när ni klickar på Fler kontroller i verktygsfältet kontroller? Som sagt verkar mitt antal nästan vara låst till 225.

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

En fil mottagen, ett kryss där kontrollen ska finnas. Testar lägga till referens till ocx-filen som sändes med - ingen skillnad...Testar både genom att lägga till OLE-kontroll via verktygsfältet kontroller samt via VBA-referenser.

 

Mysterium.

 

När filen du sände är öppnad finns dock en referens redan satt, och låst, till Mscomct2.ocx (Microsoft Windows Common Controls 2 6.0 (SP4))

 

Office XP Small Bussiness. Dvs Excel, Word, Outlook och något mer. Även Works finns installerat (aldrig startat dock tror jag). Inte Access dock.

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

Jag har Office 2000 installerat. Men vid installation valde jag kör allt från datorn

och jag har kontrollern ni pratar om i Excel.

Det är alldeles nyinstallerat och har inte rört Office förrän idag förutom Outlook.

Milla

 

Den som uppfann arbetet måste inte ha haft någonting att göra.

 

[inlägget ändrat 2006-10-25 21:11:00 av Datamilla]

Länk till kommentar
Dela på andra webbplatser

ingen effekt...

 

225 kontroller än. Testade i Word också, inget där heller.

 

Mystiskt. Något verkar vara lite galet i datorn.

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

Kul att se dig på fel sida för en gångs skull :)

Du får väl ta till standardfelsökningen, omregistrera office osv. Men spontan känns det ju som om office borde låna active-x hanteringen av Windows.

 

Dum tanke, har du laddat ner IE7? Det skall ju vara en säkerhetshöjjare. Kan det vara så att 7:an mixar med någon grundläggande ActiveX inställning i Windows? Tillräckligt långsökt för att vara sant :)

 

Länk till kommentar
Dela på andra webbplatser

Verkar ligga under .NET Framework. Jag har ver 1.1 installerat och någon hotfix.

 

.NET Framework Class Library

 

DateTimePicker Class

 

Hittade lite information på den här sidan:

 

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformsdatetimepickerclasstopic.asp

 

och snokade lite i mitt eget system...

 

Mvh Micke

 

Länk till kommentar
Dela på andra webbplatser

Ok, nu har jag fått det att fungera.

 

Åtgärder och effekter (i ordning)

• Installera uppdatering som det länkats till tidigare - ingen effekt

• Reparera Office - ingen skillnad

• Avinstallera Works - antalet kontroller sjönk till 204.

• Ladda/lägga till anvisad OLE-kontroll - ökade från 204 till 209 kontroller och se - där finns den. (undrar vad mer matnyttigt som lades till)

 

Va f@n gjorde Works med datorn egentligen? Har ALDRIG använt Works. Works finns installerat per default på datorn när man köra en fabriksåterställning.

 

Har i övrigt, apropå frågor i tråden

• ej IE 7 installerat

• .Net 1 och .Net 2 installerat

 

Nu ska vi se om jag kan nyttja denna på något bra sätt i något av mina Excel-ark...

 

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...