Avatar billede akss Nybegynder
14. september 2006 - 08:39 Der er 13 kommentarer

Kan tvinge udfyldes af et felt, hvis data i et andet. (Version 2)

Hej.

Tak for alle svare i forbindelse med version 1, af dette spørgsmål, fik det til at virke, men havde regnet med at jeg blot kunne udvide det til at dække resten af kolonnerne, men sådan virker det åbenbart ikke.
Mit ark er som følgende:
  A            B            C                  D
1  Budget,      Forbug,      Måned.            Blank
2. "talværdi"    "talværdi"    vælg fra liste  Blank

Brugeren kan indtaste en tal værdi i Budget eller forbrug, og når dette sker ønsker jeg at excel tvinger brugeren til at vælge en måned i kolonne C. (Listen kommer fra en data valideringsliste)

Og dette forsætter på E, igen og gentages 32 gang i samme ark, hvordan får jeg det til at virke på alle felter, så man feks. taster i I, og flytes til K, med msg. box husk måned.

GIver det mening og er dette muligt smart, eller skal jeg kopier koden for de første 4 rækker 31 gange yderliger og ændre range.
Avatar billede mrjh Novice
14. september 2006 - 09:54 #1
Prøv denne

Private Sub Worksheet_Change(ByVal Target As Range)
    For i = 1 To 40 Step 4
    If Not Intersect(Target, Range(Cells(Target.Row, i), Cells(Target.Row, i + 1))) Is Nothing Then
        If Target.Column = i Or (i + 1) Then
            Cells(Target.Row, i + 2).Activate
            MsgBox "Indtast måned"
        End If
    End If
    Next i
End Sub
Avatar billede akss Nybegynder
14. september 2006 - 10:20 #2
Perfekt den sidder lige hvor den skal, tak.
Et tillægs spørgsmål er der nogle gode begynder steder man kan lære om Visual Basic, nogle tips i den retning.
Og tak. AKSS
Avatar billede akss Nybegynder
14. september 2006 - 10:22 #3
Prøver igen.
De 60 point bør her gå til mrjh, men kan ikke hvordan jeg kan fordele dem.
MRHJ, skal du submitte et svar som jeg så godkender eller ?
Avatar billede mrjh Novice
14. september 2006 - 10:40 #4
Korrekt, jeg skal lige svare før du kan give point :-)
Avatar billede mrjh Novice
14. september 2006 - 10:42 #5
I øvrigt tog kom du selv til at tage pointene på det tidl. spm.
Prøv at søg i fritekst herinde omkring at lære om VBA. Der er en masse svar om emnet, både bøger og på nettet.
Avatar billede akss Nybegynder
14. september 2006 - 10:45 #6
Hej

Ja er nu endelig ved at lære dette system at kende, oprette et nyt spørgsmål til Excelent, hvis han/hun vil have point.
Tak for hjælpen.
Avatar billede mrjh Novice
14. september 2006 - 10:58 #7
For at give point marker du boks med navn ude i venstre kolonne og trykker accepter (mener jeg at kunne huske)
Avatar billede excelent Ekspert
14. september 2006 - 11:16 #8
måske jeg har misforstået, men koden forhindrer ikke bruger i at
indtaste et tal i fx. celle A4, for herefter at indtaste et tal i celle A8
uden at vælge måned i celle C4
Men det er måske heller ikke meningen ? :-)
Avatar billede mrjh Novice
14. september 2006 - 11:22 #9
Ja excelent - Det undrede også mig, da den oprindelige kode sikrede dette. Men han har selv tilrettet koden i det forrige spm. til kun at vælge cellen.
Avatar billede akss Nybegynder
14. september 2006 - 11:55 #10
Hej Excelent og Mrjh.

Jeg er ikke helt sikker på hvilke kode i mener der tvinger vælg fra drop down liste i den tredje kolone. Jeg har måske ikke forklaret godt nok.

Arket er et rimeligt stort opfølgnings ark, på divers konto forbrug på tværs af flere afdelinger, derfor skal det være rimelig beskyttet og bruger venligt.

Arket er lavet således at der under hver Konto er 3 koloner + 1 tom kolone. (Hefter kaldet konto gruppe)
Kolone 1: Forbrug
Kolone 2: Forekast
Kolone 3: "drop Down - data validation" "Vælg måned"
Kolone 4: Tom.
Herefter gentages disse 4 koloner i ca. 32 gange, altså ialt ca. 128 kolonner.
Hvis der indtastes et tal i en forbrug eller forekast i den individuelle kontogruppe, skal brugeren tvinges til at vælge en måned fra datavalidering.

Mit problem i tidliger løsning var at ikke alle gav dette response for enten forbrug eller forekast da man jo ikke behøver at indtaste data i begge, men kun den ene.

Såfremt i kan lave en kodning der sikre dette er jeg da klar på at tildele endnu flere point for det er super sejt. (Eneste udfordring for mig på dette er hvordan får/køber man flere point)
Håber det giver mere menning.
AKSS
Avatar billede excelent Ekspert
14. september 2006 - 12:00 #11
de ekstra kolonner tager min ikke højde for (endnu) idet det er en tilgføjelse
men kan først se på det efter arb.tid
måske mrjh har bedre tid
rolig nu med de point :-)
Avatar billede excelent Ekspert
15. september 2006 - 22:02 #12
Følgende kode indsættes i arkets kodemodul
forudsætter at dine overskrifter er :
Forbrug, Forekast, Måned, Tom  * 32

Forslag.:
højreklik på aktuel ark-fane, vælg opret kopi, udskift koden med denne
så kan du jo prøve om det kan bruges, ellers bare slet arket igen.

Private Sub Worksheet_Change(ByVal Target As Range)
If Target = "" Then Exit Sub
If Cells(1, ActiveCell.Column) = "Forbrug" Then
Cells(ActiveCell.Row, ActiveCell.Column + 2).Select
Exit Sub
End If
If Cells(1, ActiveCell.Column) = "Forekast" Then
Cells(ActiveCell.Row, ActiveCell.Column + 1).Select
Exit Sub
End If
If Cells(1, ActiveCell.Column) = "Måned" Then
Cells(ActiveCell.Row + 1, ActiveCell.Column - 2).Select
Exit Sub
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Forbrug, Forekast, Måned

If ActiveCell.Row <= 1 Then Cells(2, ActiveCell.Column).Select
If ActiveCell.Column > 129 Then Exit Sub

If Cells(1, ActiveCell.Column) = "Forbrug" Then
Forbrug = Cells(38, ActiveCell.Column).End(xlUp).Row
Forekast = Cells(38, ActiveCell.Column + 1).End(xlUp).Row
Måned = Cells(38, ActiveCell.Column + 2).End(xlUp).Row
If Måned < Forbrug Or Måned < Forekast Then Cells(Måned + 1, ActiveCell.Column).Select
Exit Sub
End If

If Cells(1, ActiveCell.Column) = "Forekast" Then
Forbrug = Cells(38, ActiveCell.Column - 1).End(xlUp).Row
Forekast = Cells(38, ActiveCell.Column).End(xlUp).Row
Måned = Cells(38, ActiveCell.Column + 1).End(xlUp).Row
If Måned < Forbrug Or Måned < Forekast Then Cells(Måned + 1, ActiveCell.Column).Select
Exit Sub
End If

If Cells(1, ActiveCell.Column) = "Måned" Then
Forbrug = Cells(38, ActiveCell.Column - 2).End(xlUp).Row
Forekast = Cells(38, ActiveCell.Column - 1).End(xlUp).Row
Måned = Cells(38, ActiveCell.Column).End(xlUp).Row
If Måned < Forbrug Or Måned < Forekast Then Cells(Måned + 1, ActiveCell.Column).Select
Exit Sub
End If

If Cells(1, ActiveCell.Column) = "" Then
Forbrug = Cells(38, ActiveCell.Column - 3).End(xlUp).Row
Forekast = Cells(38, ActiveCell.Column - 2).End(xlUp).Row
Måned = Cells(38, ActiveCell.Column - 1).End(xlUp).Row
If Måned < Forbrug Or Måned < Forekast Then
Cells(Måned, ActiveCell.Column - 1).Select
MsgBox (" Måned skal udfyldes")
End If
End If
End Sub
Avatar billede excelent Ekspert
15. september 2006 - 22:07 #13
glemte lige at min test version kun tester til række 38
dette tal ændres let med find/udskift i editoren
vælg blot et tal som er rigeligt stort (max 65536)
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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