excel - VBA method 'range of object' _Worksheet failed Shapes.Range(Array -
i trying move shapes on 2nd sheet based on values of 1st sheet. keep getting error line....shapes.range(array(.... below code.
sub graphics_mover() ' graphics_mover macro dim swl_row double, pwl_row double dim rng variant, integer, colnum integer, data worksheet, pict worksheet set data = thisworkbook.worksheets(1) 'set pict = thisworkbook.worksheets(2) set pict = workbooks("well pictographs2.xlsm").worksheets(2) = 1 = 1 27 swl_row = data.cells(2, + 1).value swl_row = int(swl_row / 50 + 1) pict.shapes.range(array("isosceles triangle " & i)).select selection.top = swl_row * 15 + 4 pwl_row = data.cells(3, + 1).value pwl_row = int(pwl_row / 50 + 1) pict.shapes.range(array("freeform " & i)).select selection.top = pwl_row * 15 + 1 = + 1 next '-------------------------- end sub the line causing error is:
pict.shapes.range(array("freeform " & i)).select i appreciate solutions.
i'm curious value of i when crash. code largely same recorded macro syntax correct if named shape(s) exist.
first run small snippet output of shapes' names vbe's immediate window (ctrl+g).
sub list_shapes() dim long workbooks("well pictographs2.xlsm").worksheets(2) = 1 .shapes.count debug.print .shapes(i).name next end end sub when in vbe, tap ctrl+g open immediate window , check output. make sure have isosceles triangle 1 through isosceles triangle 27 (inclusive).
next run through modification of macro.
sub graphics_mover() dim swl_row double, pwl_row double dim rng variant, integer, colnum integer, data worksheet, pict worksheet on error resume next set data = thisworkbook.worksheets(1) workbooks("well pictographs2.xlsm").worksheets(2) = 1 27 swl_row = data.cells(2, + 1).value swl_row = int(swl_row / 50 + 1) if not .shapes("isosceles triangle " & i) nothing .shapes("isosceles triangle " & i).top = swl_row * 15 + 4 debug.print "moved " & .shapes("isosceles triangle " & i).name end if pwl_row = data.cells(3, + 1).value pwl_row = int(pwl_row / 50 + 1) if not .shapes("freeform " & i) nothing .shapes("freeform " & i).top = pwl_row * 15 + 1 debug.print "moved " & .shapes("freeform " & i).name end if next end end sub i'm not big fan of using on error resume next dealing object avoiding detection. vbe's immediate window report shapes move.
Comments
Post a Comment