Avatar billede kristiankogut Nybegynder
07. november 2006 - 18:57 Der er 14 kommentarer og
1 løsning

excel - flyt markør efter instast af værdi 1 til 6

jeg har et skema som skal udfyldes med en data.
derved har ejg brugt excel til optælling og beregninger.
I det ene arks kode har jeg har noget script til at skifte linie ved kolonne R, ser således:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("R:R")) Is Nothing Then
Cells(Target.Row + 1, 1).Select ' vælger næste række i A kolonnen
End If
End Sub

det virker fint. Men nu vil jeg have det sådan at man kan kun kan indtaste éet tal fra 1 til 6. Når tallet er tastet skal markøren hoppe videre til højre og ved række R skal den skifte linie ligesom den overstående kode..
Avatar billede kristiankogut Nybegynder
07. november 2006 - 22:05 #1
http://www.eksperten.dk/spm/108246 --> celleflytning ved indtastning i et felt flyttes markøren til næste..
Avatar billede kristiankogut Nybegynder
07. november 2006 - 22:15 #2
Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("A2:C600")) Is Nothing Then
' ret ovenstående til indtastningsområdet
If Not IsNumeric(Target) Then
Target = ""
MsgBox " indtast tal"
Target.Select
End If
End If
End Sub

Overståene virker så man kun kan indtaste tal og ikke bugstavger, men jeg har brug for der kun kan indtastes fra tallet 1 til 6,ikke alle tal.
Avatar billede kristiankogut Nybegynder
07. november 2006 - 22:19 #3
Hvis jeg laver "If Not IsNumeric(Target) Then" om til

If Not Target = "1" Then

virker det også fint, men så gennemløber den resten af felterne i arket.. Det er jo ikke meningen.
Avatar billede kabbak Professor
07. november 2006 - 22:22 #4
Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Range("A2:C600")) Is Nothing Then
        ' ret ovenstående til indtastningsområdet
        If Not IsNumeric(Target) Or Target > 6 Or Target < 1 Then
            Application.EnableEvents = False
            Target = ""
            MsgBox " indtast tal ( 1 - 6 )"
            Target.Select
        End If
        Application.EnableEvents = True

    End If
End Sub
Avatar billede kristiankogut Nybegynder
07. november 2006 - 22:43 #5
Den bugger.. Det virker ikke
Der må være en fejl
Avatar billede kabbak Professor
07. november 2006 - 22:50 #6
Hvor bugger den ??
Avatar billede kabbak Professor
07. november 2006 - 22:55 #7
den er testet og skulle være ok.
Avatar billede kristiankogut Nybegynder
07. november 2006 - 22:59 #8
har du en mail jeg kan sende regnearket til?
Jeg ahr siddet non-stop siden kl. 16.22 og kan endnu ikke få det til at virke..
Avatar billede kristiankogut Nybegynder
07. november 2006 - 23:02 #9
nej.. jeg glemte bare at rette Range til.. :D *TOTAL OPTUR*

nu mangler jeg bare at den skifter til næste felt når det intastet er korrekt
Avatar billede kabbak Professor
07. november 2006 - 23:02 #10
kabbak snabela tiscali dot dk
Avatar billede kabbak Professor
07. november 2006 - 23:06 #11
Private Sub Worksheet_Change(ByVal target As Range)
    If Not Intersect(target, Range("A2:r600")) Is Nothing Then
        ' ret ovenstående til indtastningsområdet
        If Not IsNumeric(target) Or target > 6 Or target < 1 Then
            Application.EnableEvents = False
            target = ""
            MsgBox " indtast tal ( 1 - 6 )"
            target.Select
        End If
        Application.EnableEvents = True
    target.Offset(0, 1).Select' flytter 1 celle til højre
    End If
End Sub
Avatar billede kristiankogut Nybegynder
07. november 2006 - 23:23 #12
det virker fint men først når man har trykket tab. Det skal være aktivt ved indtastning og ikke først ved enter/tab
Avatar billede kabbak Professor
07. november 2006 - 23:26 #13
det kan man ikke, men kan ikke fange keypress på en celle
Avatar billede kristiankogut Nybegynder
07. november 2006 - 23:29 #14
oki...
sidste ting

med din dejlige overstående kode har jeg problemer med at få
hvis der er en fejl i indtastningen gør den

  Application.EnableEvents = True
    target.Offset(0, 1).Select' flytter 1 celle til højre

Det skal den kun hvis der er rigtig indtastning
Avatar billede kabbak Professor
07. november 2006 - 23:32 #15
Private Sub Worksheet_Change(ByVal target As Range)
    If Not Intersect(target, Range("A2:r600")) Is Nothing Then
        ' ret ovenstående til indtastningsområdet
        If Not IsNumeric(target) Or target > 6 Or target < 1 Then
            Application.EnableEvents = False
            target = ""
            MsgBox " indtast tal ( 1 - 6 )"
            target.Select
            Application.EnableEvents = True
            Exit Sub
        End If
     
    target.Offset(0, 1).Select
    End If
End Sub
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