excel - VBA data validation to default value from named range -
so have data validation in once cell changes 1 of 3 different named ranges based on user selection in cell. need when user selects value, i.e. "selection a", data validation not change corresponding named range, display first value within range.
currently can manipulate code default value, keeps changing default value every time try , make selection.is possible? below code i'm running once specific named range using worksheet_change event
in example i've used named range selection_a
private sub worksheet_change(byval target range) if range("$e$3").value = "selection a" range("l3:r4").validation .delete .add type:=xlvalidatelist, alertstyle:=xlvalidalertstop, operator:= _ xlbetween, formula1:="=selection_a" .ignoreblank = false .incelldropdown = true .inputtitle = "" .errortitle = "" .inputmessage = "" .errormessage = "" .showinput = true .showerror = true end end if
with default value showing , changing constantly:
private sub worksheet_change(byval target range) if range("$e$3").value = "selection a" range("$l$3").value = sheets("sheet2").range("$m$4").value range("l3:r4").validation .delete .add type:=xlvalidatelist, alertstyle:=xlvalidalertstop, operator:= _ xlbetween, formula1:="=selection_a" .ignoreblank = false .incelldropdown = true .inputtitle = "" .errortitle = "" .inputmessage = "" .errormessage = "" .showinput = true .showerror = true end end if
in example below create validation list in cell a1 of sheet1. entries list listed in k7 k9.
with sheet1("a1").validation .delete .add type:=xlvalidatelist, alertstyle:=xlvalidalertstop, operator:= _ xlbetween, formula1:="=sheet1!$k$7:$k$9" end
i'll use format because better. question:
private sub worksheet_change(byval target range) if not intersect(target, sheet1.range("e3")) 'checks e3 1 changed application.enableevents = false if range("$e$3").value = "selection a" 'list sheet1("a1").validation .delete .add type:=xlvalidatelist, alertstyle:=xlvalidalertstop, operator:= _ xlbetween, formula1:="=sheet1!$k$7:$k$9" 'cells list end elseif range("$e$3").value = "selection b" then' list b sheet1("a1").validation .delete .add type:=xlvalidatelist, alertstyle:=xlvalidalertstop, operator:= _ xlbetween, formula1:="=sheet1!$k$7:$k$9" 'cells list b end end if end if application.enableevents = true end sub
i'm pretty sure got cells wrong, put right ones per example gave top! right when e3 changed, create new list depending on in e3. e3 should validation list in opinion, , possibilities should represented in worksheet change event.
edit: added enableevent = false after seeing byron's comment, without make fire in execution.
Comments
Post a Comment