Most Valuable Professional


subscribe to rss feed
Subscribe in a reader

Home > Nederlandse site > Artikelen > Selecteer een bereik (VBA)
This page in English

Een bereik laten selecteren door de gebruiker (VBA, Bug in Application.InputBox functie)

Excel versies

Deze bug is van toepassing op alle Excel versies vanaf Excel 5/95. De bug is gerepareerd in Excel 2007.

Inleiding

Dit artikel beschrijft een bug die door Ron de Bruin is ontdekt en die hier ook wordt gemeld.

De Application.InputBox functie is zeer handig om een bereik door de gebruiker te laten selecteren, waarmee vervolgens in de VBA code verder gewerkt kan worden. Helaas bevat deze functie een bug (all huidige Excel versies hebben deze bug). Wanneer er op het werkblad waarop een bereik wordt geselecteerd voorwaardelijke opmaak is ingesteld waarbij bovendien gebruik is gemaakt van de optie "formule is", dan kan de functie een lege string als resultaat teruggeven, ondanks dat een geldig bereik geselecteerd was en de gebruiker gewoon op OK heeft geklikt.

De bug reproduceren

Gebruik deze voorbeeld code op een werkblad met cellen met voorwaardelijke opmaak, waarbij de "Formule Is" optie is gebruikt (zie de download hieronder voor een voorbeeld bestand):

Sub ProblemCode()
    Dim oRangeSelected As Range
    On Error Resume Next
    Set oRangeSelected = Application.InputBox("Please select a range of cells!", _
                         "SelectARAnge Demo", Selection.Address, , , , , 8)
    If oRangeSelected Is Nothing Then
        MsgBox "It appears as if you pressed cancel!"
    Else
        MsgBox "You selected: " & oRangeSelected.Address(external:=True)
    End If
End Sub

Wanneer deze code wordt uitgevoerd op een dergelijk werkblad, dan blijft het Range object "oRangeSelected" leeg. Een voorbeeld formule voor de voorwaardelijke opmaak zou kunnen zijn:

=OF($A1=1; $A1=3)

De enige betrouwbare manier om deze bug te omzeilen is door een userform te maken die aan de gebruiker het bereik vraagt, zoals in dit voorbeeld bestand.


Geef dit artikel een cijfer:

(336 keer beoordeeld. Gemiddelde beoordeling: 5.6)

Commentaar

Geef uw commentaar hier!!!

Uw naam (verplicht veld):

Uw e-mail adres (Niet verplicht, dit adres wordt niet getoond)

Uw verzoek of commentaar: