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

Popular posts from this blog

powershell Start-Process exit code -1073741502 when used with Credential from a windows service environment -

twig - Using Twigbridge in a Laravel 5.1 Package -

c# - LINQ join Entities from HashSet's, Join vs Dictionary vs HashSet performance -