excel - Proper use of offset function and for/while loop -


bit new vba. so, forgive me if it's pretty simple. making excel form various companies' registration.

my excel records first column(a) company_name 1 has give his/her company_name.

column c has total no. of employees in company. (this includes permanent + contract employees).

column d , e has employees' names permanent only.

so, assume; column c has value 5; column (d , e) may have 5 or less 5 employee names. (strictly not more 5 employee names. if columns have more 5 names; should throw error message in sheet2)

my next column f designation. can have values among 'manager','attender','developer','operator','ceo' , no other value allowed. these values can repeated (for different employees in below image)

my_excel

for have written below code , works fine.

dim  celadr, celval, celadri, celvali, celadrn, celvaln variant  range("f2:f" & lastrow).select     ' selection.clearformats     each cell in selection         celadr = cell.address         celval = cell.value         celadri = cell.offset(0, 4).address         celvali = cell.offset(0, 4).value         celadrn = cell.offset(0, 9).address         celvaln = cell.offset(0, 9).value      if len(celval) >= 1         if instr(1, ("manager,attender,developer,operator,ceo,"), trim(ucase(celval) & ",")) < 1             range(celadr).interior.color = vbred              sheets("sheet2").range("a65536").end(xlup).offset(1, 0).value = celval & "  designation incorrect"             strstr = "'" & shname & "'!" & range(celadr).address(0, 0)             sheets("sheet2").hyperlinks.add anchor:=sheets("sheet2").range("a65536").end(xlup), address:="", subaddress:=strstr          end if     end if            next 

now next requirement is; each company, there should atleast single 'manager'.

if company don't have manager, have give message in 'sheet2' "their should atleast single 'manager' company" link correct cells in sheet1.

i able validate when 'manager' written in same row in company_name written.

but, don't have idea how when 'manager' not written in same row of company_name.

below code works when designation - 'manager' assumed written in same row of company_name.

range("a2:a" & lastrow).select      each cell in selection         celadr = cell.address         celval = cell.value     if len(celval) >= 1              if trim(cell.offset(i, 5).value) <> "manager"       cell.offset(i, 5).interior.color = vbred      sheets("sheet2").range("a65536").end(xlup).offset(1, 0).value = celval & "their should atleast single 'manager' company"     strstr = "'" & shname & "'!" & range(celadr).address(0, 0)     sheets("sheet2").hyperlinks.add anchor:=sheets("sheet2").range("a65536").end(xlup), address:="", subaddress:=strstr     end if      end if     next 

i tried write code below validate when 'manager' written on different row company_name.

(i have commented part giving me error.)

range("a2:a" & lastrow).select ' selection.clearformats each cell in selection     celadr = cell.address     celval = cell.value if len(celval) >= 1         ' = 0 cell.offset(0, 2).value         if trim(cell.offset(i, 5).value) <> "manager" 'and cell.offset(1, 0).value < 1         ' nothing ' else cell.offset(i, 5).interior.color = vbred  sheets("sheet2").range("a65536").end(xlup).offset(1, 0).value = celval & "their should atleast single 'manager' company" strstr = "'" & shname & "'!" & range(celadr).address(0, 0) sheets("sheet2").hyperlinks.add anchor:=sheets("sheet2").range("a65536").end(xlup), address:="", subaddress:=strstr end if  ' next  ' if cell.offset(1, 0).value >= 1 ' end if  end if  next 

can guide me how can make proper use of offset function , loop/while loop/find function verify each company has atleast single manager?

when trying determine if missing or not generaly easier set boolean use afterwards apply correct procedure.

this should :

dim hasmanager boolean, _     lastrow long lastrow = activesheet.range(rows.count).end(xlup).row  range("a2:a" & lastrow).select 'selection.clearformats  each cell in selection     celadr = cell.address     celval = cell.value     if len(celval) >= 1         hasmanager = false         'for = 0 cell.offset(0, 2).value         = 0         while hasmanager = false , _         (cell.offset(i, 0).value = "" or cell.offset(i, 0).value = celval) , _         cell.offset(i, 0).row <= lastrow + 1             if lcase(trim(cell.offset(i, 5).value)) = "manager" hasmanager = true             = + 1         loop          if hasmanager             'the company has @ least 1 manager         else             'the company doesn't have manager             cell.offset(i - 1, 5).interior.color = vbred              sheets("sheet2").range("a65536").end(xlup).offset(1, 0).value = celval & "their should atleast single 'manager' company"             strstr = "'" & shname & "'!" & range(celadr).address(0, 0)         end if     else     end if next cell 

Comments

Popular posts from this blog

python 3 IndexError: list index out of range -

android - How to save instance state of selected radiobutton on menu -

IF statement in MySQL trigger -