Avatar billede thorvall Nybegynder
26. april 2010 - 13:10 Der er 4 kommentarer og
1 løsning

VBA, loop til kontrol af indput.

Er ved at lave en Userform til indtastning af måneds data, og vil i den forbindelse "centralisere" kontrol funktioner med mere, men kan ikke finde den rigtige syntax til at vælge de relevante elementer:

Setup er som følger:
1: Alle indput felter er textbox
2: De har alle navnet Month[1..12]Type[1..4]
3: Userformen har name=Mrevision

Følgende er mit forsøg som fejler (Ved for each..):
Sub ErTal()
    Dim Ctl As Object
    Dim Mrev As Mrevision
    For Each Ctl In Mrevision
        If Not InStr(Ctl.Name, "Month") = 0 Then   
            If Not Ctl = vbNullString Then
                If Not IsNumeric(Ctl) Then
                    MsgBox "Desværre, kun tal!"
                Ctl = vbNullStrin
                End If
            End If
        End If
    Next         
End Sub

Dette fungere fint, men vil gerne have en fælles rutine der kontrolerer alle textbokse.
Private Sub ErTal2()
    If TextBox1 = vbNullString Then Exit Sub
        If Not IsNumeric(TextBox1) Then
            MsgBox "Sorry, numbers only"
            TextBox1 = vbNullString
        End If
End Sub
Avatar billede supertekst Ekspert
26. april 2010 - 13:16 #1
Kunne det ikke være en mulighed, at udføre denne kontrol når en af tekstboksene blev ændret?

Kontrollen kunne centraliseres i enkelt Sub.
Avatar billede thorvall Nybegynder
26. april 2010 - 13:28 #2
Kontrollen kan fint køres ved ændring i de enkelte celler, men det er reelt ikke nødvendigt og keden bliver noget nemmere at overskue såfremt det ikke er ved "Month1Type4_change()" at kontrolle foretages.

Men problemmet er reelt det samme om det er som "_change" eller en anden faktor der starte proceduren. Nemlig hvorledes referer jeg til / looper igennem de enkelte celler.

Mvh
Avatar billede supertekst Ekspert
26. april 2010 - 13:35 #3
Sådan:

Sub ErTal()
    Dim Ctl As Object
'    Dim Mrev As Mrevision
    For Each Ctl In Mrevision.Controls
        If Not InStr(Ctl.Name, "Month") = 0 Then
            If Not Ctl = vbNullString Then
                If Not IsNumeric(Ctl) Then
                    MsgBox "Desværre, kun tal!"
                Ctl = vbNullStrin
                End If
            End If
        End If
    Next
End Sub
Avatar billede thorvall Nybegynder
26. april 2010 - 13:43 #4
Takker. Vil du ikke oprettet et svar.
Avatar billede supertekst Ekspert
26. april 2010 - 13:47 #5
Selv tak & et svar
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
Kurser inden for grundlæggende programmering

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