i using barcode font generate barcodes,
column text - *column b barcode*
i have following macro in thisworkbook works okay.
private sub workbook_sheetchange(byval sh object, byval target range) if isempty(target) or target.column <> 1 , target.column <> 4 exit sub dim datarow integer datarow = target.cells.row while not isempty(cells(datarow, target.column)) target.worksheet.cells(datarow, target.column + 1) = "*" & target.worksheet.cells(datarow, target.column) & "*" datarow = datarow + 1 wend end sub
when scan 22 digit # in column a; on column b skip first 7 digit , have last 15 digit on column b
e.g: if 22 digit skip first 7 if 32 digit skip first 16 & last 4 if 34 digit skip first 22
first off, sh parameter of workbook_sheetchange
event macro worksheet object containing target. can use directly; there no need pare worksheet target.
next, idea when adding/modifying/deleting objects within worksheet_change
or workbook_sheetchange
event macro turn off application.enableevents
macro not try run on top of when changes/deleted/adds value on same (or different) worksheet.
private sub workbook_sheetchange(byval sh object, byval target range) if not intersect(sh.range("a:a, d:d"), target) nothing on error goto fìn application.enableevents = false dim datarow long, rng range each rng in intersect(sh.range("a:a, d:d"), target) select case len(rng.value2) case 0 'do nothing case 22 rng.offset(0, 1) = chr(42) & mid(rng.value2, 8, 99) & chr(42) case 32 rng.offset(0, 1) = chr(42) & mid(rng.value2, 8, 21) & chr(42) case 34 rng.offset(0, 1) = chr(42) & mid(rng.value2, 23, 99) & chr(42) case else rng.offset(0, 1) = chr(42) & rng.value2 & chr(42) end select next rng end if fìn: application.enableevents = true end sub
target knows worksheet on there no need define worksheet when referencing cell offset target.
a select case
... end select` based on length of values in target seemed best solution , allows easy expandability.
and finally, need multiple worksheets workbook_sheetchange
event macro or single worksheet's worksheet_change
suffice?