bij overschrijden maximum value, msgbox

Status
Niet open voor verdere reacties.

dopoog

Gebruiker
Lid geworden
9 aug 2010
Berichten
35
Dag,
Ik heb onderstaande code (deel) om een willekeurig aantal selecties te maken.

Code:
...
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

End With

myResponse = Range("A1")

    
If myResponse = vbNullString Then

Exit Sub

Else

(selectie maken)...

LastRow bepaalt de maximale selecties (als er 20 rijen zijn dan is de max dus 20).
myResponse kijkt naar wat in cel A1 is ingevuld.
Als er 1 tm 20 wordt ingevuld; gaat de selectie goed.

Maaar..... hoe zorg ik dat er bij een negatief getal en bij meer dan de max een foutmelding (msgbox) komt??

In formule vorm moet het er dus zo uit te komen zien:

If myResponse is < 0 ; then error
If myResponse is > LastRow; then error.
 
Zoiets:

Code:
Select Case myResponse
    Case < 1, > LastRow
        Msgbox("Fout")
End Select
 
Laatst bewerkt:
Hij geeft geen foutmelding bij > lastrow

Code:
With ActiveSheet

LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

End With


myResponse = Range("D1")


Select Case myResponse
    Case Is < 1, Is > LastRow
        MsgBox ("Fout")
End Select


If myResponse = vbNullString Then
 
De code is goed dus dan zal je naar een andere oorzaak dan die vergelijking moeten zoeken.

Ook doe je niet aan type declaratie (Dim) en dat kan problemen geven tussen tekstuele en integer vergelijkingen.
Wijzig de Select regel eens in dit:
Select Case CInt(myResponse)
 
Laatst bewerkt:
Ik heb geprobeerd met

range("D2").Value

Maar dan geeft hij altijd een foutmelding :)
 
Laatst bewerkt:
Doe LastRow eens zo:
Code:
LastRow = Range("A65536").End(xlUp).Row

En heb je al eens gedaan wat in #4 staat?
 
Laatst bewerkt:
#4 had ik niet gezien; die had je later aangepast :)

Maar dat blijkt het inderdaad te zijn. De formule werkt zonder die toevoeging andersom...

dan geeft hij juist een foutmelding als het NIET moet.
als je 9 (cel d1) had opgegeven, gaf hij een error, terwijl dit niet groter is dan 10. (cel d2)


Maar het is nu opgelost. Bedankt!
code voor de liefhebber:

Code:
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
'In cel d2 max. mogelijkheid
Range("D2").Select
ActiveCell.FormulaR1C1 = LastRow


End With

'myresponse is wat gecontroleerd wordt (met max.)

myResponse = Range("D1").Value

'als myresponse groter is dan 9 ; dan error
'maar dit is omgedraaid


Select Case CInt(myResponse)

Case Is < 0, Is > LastRow
    
        MsgBox ("Fout")
End Select
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan