Invullen getal verschijnt invulbox, invulbox niet als getal wordt gewist

Status
Niet open voor verdere reacties.

Anton Noordam

Gebruiker
Lid geworden
23 okt 2008
Berichten
9
Hallo,

Sinds kort ben ik lid en vind deze site erg interessant en heb al veel geleerd.
Als VBA hobby-ist heb ik een vraag over een invulbox.

In excel wil ik een invulbox oproepen als een getal getypt wordt in cel A10 een zgn "item nr."
Dit ingetypte getal zoekt in een ander tabblad met een verzameling materialen d.m.v. de functie vertikaal zoeken naar hetzelfde item nr en kopieert diverse gegevens rechts van cel B10.

In de invulbox die verschijnt nadat in cel A10 een getal geypt is, wil ik een getal in kunnen vullen dat geplaatst wordt in de cel rechts van A10 dus B10. Dit in te vullen getal is het aantal.
Als het ingetypte getal in cel A10 wijzigt en er wordt een ander getal in deze cel getypt verschijnt de invulbox ook.
Dit werkt inmiddels volgens onderstaande gegevens. De macro staat in VBA in tabblad 1 omdat deze alleen voor dit tabblad toegepast mag worden.

De vraag is nu, als het getal wordt gewist in cel A10, mag de invulbox niet verschijnen.
Hoe is dit te realiseren?

VBA begin
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A10:A20")) Is Nothing Then Exit Sub
Target.Offset(0, 1).Value = InputBox("Vul het aantal in:")
End Sub
VBA einde



Alvast hartelijk dank voor de aankomende reactie.
Met vr groet
Anton
 
De vraag is nu, als het getal wordt gewist in cel A10, mag de invulbox niet verschijnen.
Hoe is dit te realiseren?

Dat heb je zelf al gedaan toch? (zie: )
Code:
If Intersect(Target, Range("A10:A20")) Is Nothing Then Exit Sub
Als dat achter niet werkt, kan je zoiets proberen:
Code:
If Intersect(Target, Range("A10:A20")) = "" Then 
Exit Sub
end if

(nothing is niet gelijk aan een lege string, en ik denk dat je dat probeerde?


:thumb:
 
Invulbox verschijnt met objectvariabele of blokvariabele is niet ingesteld.

Dat heb je zelf al gedaan toch? (zie: )
Code:
If Intersect(Target, Range("A10:A20")) Is Nothing Then Exit Sub
Als dat achter niet werkt, kan je zoiets proberen:
Code:
If Intersect(Target, Range("A10:A20")) = "" Then 
Exit Sub
end if

(nothing is niet gelijk aan een lege string, en ik denk dat je dat probeerde?


:thumb:

Hallo Vegras of zoals er ook staat Mega Senior,

Dank voor je snelle reactie.
Ik heb het geprobeerd maar ben nog niet zo ervaren, en doet nog steeds iets fout, want nu verschijnt "objectvariabele of blokvariabele is niet ingesteld.

Ik sluit voor alle zekerheid de excel file 2003 bij.

Dank en groet.
Anton
 

Bijlagen

Vegras hoor, 'mega senior' is omdat ik 1000+ posts heb ofzo.

Je vraag:
Ik heb niet heel lang gekeken, maar met deze code werkt het wel. Het is niet echt mooi. Ben geen VBA expert.
Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo errhand

    If CStr(Intersect(Target, Range("A10:A20"))) = "" Then
       Exit Sub
    End If
    
       Target.Offset(0, 1).Value = InputBox("Vul het aantal in:")

errhand:
If Err.Number = 91 Then
    Resume Next
End If

End Sub

De code werkt goed, alleen een error handler is niet heel erg netjes.


Wat uitleg:
De 'on error goto errhand' regel zorgt ervoor dat als er een error komt, deze 'door wordt gestuurd' naar het label 'errhand'.
Regeltjes later:
Code:
errhand:
If Err.Number = 91 Then
    Resume Next
End If
Err.number bevat het nummer van de error, als die er tenminste is. Omdat we alleen problemen hebben bij error # 91, heb ik deze via een if...end if uitgesloten via de 'resume next' regel, wat ervoor zorgt dat de code niet breekt maar gewoon doorgaat.



:thumb:
 
Laatst bewerkt:
Werkt goed met code error enz.

Hallo Vegras,

Wederom dank voor je 2e snelle reactie.

Ondanks, zoals je schrijft, dat het geen nette oplossing is, ben ik er blij mee.
Want het werkt zoals ik me het had voorgesteld.

Succes en groet
Anton
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan