JKP Application Development Services.

                    Microsoft Office Application Development

Selecteer een bereik (VBA)

Up • Beschadigde mappen • Macro Verspreiden • Excel Namen • Opstart Problemen • Vergelijking plotten • Show Picture • Round2Digits • Control Events • Custom Find • FormuleFoutControle • Events uitschakelen • WebQuery • Undo met Excel VBA • XML en Excel 2003 • Selecteer een bereik (VBA) • Transponeer Tabel • VBE Vensters dokken • Een invoegtoepassing bijwerken

•  •

Search Zoeken

WWW
This site

Go to Ga Naar
Home
Up

Donate Donaties
Did you find something helpful on my site? Consider a donation!
Heeft u iets gevonden waar u wat aan had? Overweeg dan een donatie!

 

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:

(292 keer beoordeeld. Gemiddelde beoordeling: 5.5)

Commentaar van u en anderen

Heeft u commentaar? Geef het hier!!!

Uw naam (verplicht, zal worden getoond):

Uw email adres (niet verplicht, wordt niet getoond, noch gebruikt voor verzenden van spam):

Uw commentaar op deze pagina/dit artikel (wordt getoond):

    Subscribe in a readerpowered by longhead.com

Use the contact page to issue questions or comments about this website.
Copyright © 2003-2008 JKP Application Development Services