Avatar billede laje3 Nybegynder
14. oktober 2002 - 16:23 Der er 7 kommentarer og
1 løsning

If-betingelse VBA Excel

Jeg skal i VBA lave en:

If værdien af tekstbox 1 er forskellig fra "en af værdierne" i et navngivet område på ark1 i denne workbook , SÅ msgbox (der er en fejl)ELSE "Skal der ikke ske noget"

Hvordan sammenligner jeg værdien af txtboks1 med et navngivet range fra regnearket og behøver
jeg et else statement?

Mvh

Laje
Avatar billede kabbak Professor
14. oktober 2002 - 16:42 #1
sub tjek()
For Each c In Range(Sted)' Sted = navnet på det navngivne område.
If (c, 1)<> tekstbox 1 then
msgbox (der er en fejl)
exit sub
Else

End If
next
end sub
Avatar billede kabbak Professor
14. oktober 2002 - 17:10 #2
Fejl i denne linie,det skal være.
If (c)<> tekstbox 1 then
Avatar billede laje3 Nybegynder
14. oktober 2002 - 18:08 #3
Det virker delvist! jeg satte " " omkring "sted" og det virkede. De lovlige værdier er: B,U og R.

Hvis jeg nu skriver D eller en anden vilkårlig værdi - kommer den samme fejlmeddelelse (Msgbox) 3 gange og det er ikke helt meningen!

For Each c In Range("Offers") ' Sted = navnet på det navngivne område.
If (c) <> lstOffer Then
    MsgBox ("You must select one of the Offer-types")
    lstOffer.SetFocus
Else
End If
Next
Exit Sub

Kan det løses?

Skal point forhøjes?

Mvh

Laje
Avatar billede kabbak Professor
14. oktober 2002 - 18:13 #4
Exit sub  skal stå før Else
det er derfor at du får beskeden flere gange
Avatar billede laje3 Nybegynder
14. oktober 2002 - 18:28 #5
Point forhøjet (ikke meget)  ;-)

Det virker altså ikke! Selvom jeg skriver én af de rigtige værdier kommer den med fejlbeskeden.
Dette er en meget lang kommando til en knap på en userform. Du kan lige se et brudstykke her:

Private Sub cmdSave_New_Click()

If lstClientName = "" Then
    MsgBox ("You must select a clientname from the available list")
    lstClientName.SetFocus
    Exit Sub
End If


For Each c In Range("Offers") ' Sted = navnet på det navngivne område.
If (c) <> lstOffer Then
    MsgBox ("You must select one of the Offer-types")
    lstOffer.SetFocus
Exit Sub
Else
End If
Next


If lstCategory = "" Then
    MsgBox ("You must select a Category from the available list")
    lstCategory.SetFocus
    Exit Sub
End If

Jeg har tjekket at jeg har et navngivet områder der hedder "offers", som indeholder værdierne U, B og R.

Hvad gør jeg galt?

Mvh

Laje
Avatar billede kabbak Professor
14. oktober 2002 - 18:39 #6
For Each c In Range("Offers") ' Sted = navnet på det navngivne område.
If (c) = lstOffer Then
fejl = false
exit sub ' her kan du også gå til et navngivet sted i stedet for at afslutte
  Else
fejl = true
End If
Next
if fejl = true then
MsgBox ("You must select one of the Offer-types")
    lstOffer.SetFocus
end if
Avatar billede kabbak Professor
14. oktober 2002 - 19:15 #7
For Each c In Range("Offers") ' Sted = navnet på det navngivne område.
If (c) = lstOffer Then
fejl = False
GoTo AltOk
Else
fejl = True
End If
Next
If fejl = True Then
MsgBox ("You must select one of the Offer-types")
    lstOffer.SetFocus
End If
AltOk:
If lstCategory = "" Then
    MsgBox ("You must select a Category from the available list")
    lstCategory.SetFocus
    End If
Avatar billede laje3 Nybegynder
14. oktober 2002 - 19:22 #8
>> Kabbak, den sidste, den var rent konge!

MsgBox ("You must select one of the Offer-types")
    lstOffer.SetFocus
=> Du manglede lige en "EXIT SUB" her
End If
AltOk:

Perfekt løsning  ;-)

Mange tak for hjælpen, mvh Laje
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