excel vba - Populating combobox with dynamic horizontal range -
i’m needing vba code value column ‘a’ , list adjacent horizontal non blank cells right in userform combox1.
sample data:
+-----+----+----+----+---+ | | b | c | d | e | +-----+----+----+----+---+ | a1 | 63 | | 55 | 5 | +-----+----+----+----+---+
sudo code:
sub test() myval = “a1” findme = myval set match = sheets(“sheets1”).range(a:a).find(findme) myrange = foundrange userform1.combobox.value = myrange exit sub
in example code above, foundrange row value found, plus columns ‘b’ through ‘e’, minus blanks.
combobox values:
63 55 56
thank you!
create userform named userform1, combobox named combobox , button named commandbutton1. on image below:
then use code on commandbutton populate combobox:
private sub commandbutton1_click() dim ws1 worksheet dim long, c long dim rng range, rng2 range dim cellfound range dim lastrow long, lastcolumn long set ws1 = thisworkbook.sheets(1) findme = "a1" lastrow = ws1.cells(ws1.rows.count, "a").end(xlup).row set rng = ws1.range("a:a") 'range search set rng2 = rng(lastrow, 1) rng set cellfound = .find(what:=findme, after:=rng2, lookin:=xlvalues) if not cellfound nothing firstaddress = cellfound.address lastcolumn = ws1.cells(ws1.range(cellfound.address).row, ws1.columns.count).end(xltoleft).column = range(cellfound.address).column + 1 lastcolumn if ws1.cells(range(cellfound.address).row, i) <> "" combobox.additem ws1.cells(range(cellfound.address).row, i).value next set cellfound = .findnext(cellfound) loop while not cellfound nothing , cellfound.address <> firstaddress end if end end sub
this code uses .find
function wanted use add item on combobox combobox.additem
. note code inside userform, otherwise changes necessary turn global.
after finding a1 use address row obtain last column. , loop through cellfound + 1column (2 on sample) last column comparing if value in different blank. if different, add combobox.
lastcolumn = ws1.cells(ws1.range(cellfound.address).row, ws1.columns.count).end(xltoleft).column = range(cellfound.address).column + 1 lastcolumn if ws1.cells(range(cellfound.address).row, i) <> "" combobox.additem ws1.cells(range(cellfound.address).row, i).value next
then find next value , make same thing, column can have more 1 match.
set cellfound = .findnext(cellfound)
the findme
value can replaced value, such textboxes or cell.values.
and range search rng
can set range using. e.g.: entire worksheet
Comments
Post a Comment