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!!!