i've written macro cut , paste rows 1 sheet ("new providers - fppe") multiple sheets based on column (h). when first used it, working well, when have added additional data sorting sheet ("new providers - fppe") not functioning. macro continues cut rows "new providers - fppe" rows fail populate onto sheets. have no idea rows going. have insight happening? i'm new writing macros appreciated!
option explicit sub fr33m4cro() dim sh33tname string dim custnamecolumn string dim long dim strow long dim customer string dim ws worksheet dim sheetexist boolean dim sh worksheet sh33tname = "new providers - fppe" custnamecolumn = "h" strow = 7 set sh = sheets(sh33tname) = sh.range(custnamecolumn & sh.rows.count).end(xlup).row strow step -1 customer = sh.range(custnamecolumn & i).value each ws in thisworkbook.sheets if strcomp(ws.name, customer, vbtextcompare) = 0 sheetexist = true exit end if next if sheetexist copyrow i, sh, ws, custnamecolumn else insertsheet customer set ws = sheets(worksheets.count) copyrow i, sh, ws, custnamecolumn end if reset sheetexist next end sub private sub copyrow(i long, byref sh worksheet, byref ws worksheet, custnamecolumn string) dim wsrow long wsrow = ws.range(custnamecolumn & ws.rows.count).end(xlup).row + 1 ws.rows(wsrow).entirerow.value = sh.rows(i).entirerow.value sh.rows(i).entirerow.delete end sub private sub reset(byref x boolean) x = false end sub private sub insertsheet(shname string) worksheets.add(after:=worksheets(worksheets.count)).name = shname end sub
i suggest change insertsheet
sub function returns reference inserted worksheet:
function insertsheet(shname string) worksheet set insertsheet = worksheets.add(after:=worksheets(worksheets.count)) insertsheet.name = shname end function
then change part of code:
insertsheet customer set ws = sheets(worksheets.count) copyrow i, sh, ws, custnamecolumn
to this:
set ws = insertsheet(customer) copyrow i, sh, ws, custnamecolumn
Comments
Post a Comment