Avatar billede dane022 Seniormester
07. juni 2005 - 21:09 Der er 7 kommentarer og
1 løsning

Spørger om samme vbyesno spørgsmål flere gange

Jeg har i vba sat koden til at komme med en yesno boks, når der indtastes større værdi end 13 i celle b38.
Det virker også fint, men spørgsmålet bliver stillet hver gang der ændres i en celle et andet sted på arket.
Og det er fordi øverste linje er:
Private Sub worksheet_Change(ByVal Target As Range)
Hvad skal det hedde hvis msgbox kun skal fremkomme ved ændring af celle b38 ?
Avatar billede dane022 Seniormester
07. juni 2005 - 21:35 #1
Jeg ved det kan gøres via datavalidering, men det vil jeg undgå
Avatar billede sjap Praktikant
07. juni 2005 - 21:54 #2
Prøv med følgende:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

If Target.Address = "$B$38" Then
    'Her sætter du så koden for din boks
End If

End Sub
Avatar billede dane022 Seniormester
07. juni 2005 - 22:10 #3
Det har ingen effekt, koden ser ud som følger og msgbox fremkommer ikke når jeg vælger en værdi højere end 13 og mindre end 33

If Target.Address = "$b$38" Then
If Range("b38").Value > 13 And Range("b38").Value < 33 Then
If MsgBox("Der må kun udskydes mere end 13 uger efter aftale, " & vbNewLine & "da det ikke er medarbejderens ret. " & vbNewLine & "Er der lavet en aftale ?", vbYesNo + vbQuestion, "Er der indgået aftale") = vbNo Then
  ' Der må kun udskydes mere end 13 uger efter aftale
  Range("b38").ClearContents
  Range("b38").Select
Else
End If
End If
End If
Avatar billede sjap Praktikant
08. juni 2005 - 00:17 #4
Prøv med:

If Target.Address = "$B$38" Then
    If Range("b38").Value > 13 And Range("b38").Value < 33 Then
        If MsgBox("Der må kun udskydes mere end 13 uger efter aftale, " & vbNewLine & "da det ikke er medarbejderens ret. " & vbNewLine & "Er der lavet en aftale ?", vbYesNo + vbQuestion, "Er der indgået aftale") = vbNo Then
            ' Der må kun udskydes mere end 13 uger efter aftale
            Range("b38").ClearContents
            Range("b38").Select
        Else
        End If
    End If
End If
Avatar billede sjap Praktikant
08. juni 2005 - 00:17 #5
Lidt snyd at sende hele koden igen. Det eneste jeg gjorde var at ændre

If Target.Address = "$b$38" Then

til

If Target.Address = "$B$38" Then
Avatar billede dane022 Seniormester
08. juni 2005 - 17:03 #6
Utroligt at så lidt kan gøre så meget, du har fortjent dine point
Avatar billede sjap Praktikant
08. juni 2005 - 19:37 #7
"Liden tue kan vælte et stort læs"

Dette gode gamle ordsprog gælder åbenbart stadig :0)
Avatar billede jkrons Professor
09. juni 2005 - 15:04 #8
En god idé når der indgår strenge kan være at UCASE alting. Så behøver man ikke spekulere om det ene eller det andet nu er med store eller små bogstaver og om der skelnes eller ej:

If UCase(Target.Address) = UCase("$b$38") Then
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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