excel - Subscript out of range when referencing a worksheet in another workbook from a variable -


see picture: http://s12.postimg.org/ov8djtuh9/capture.jpg

context: trying activate sheet (variable: csheet) in workbook , paste data there copied data different workbook. i'm getting subscript out of range error whenever try activate directly using variable (i.e. worksheets(name).activate) or try define worksheet using variable , activate it. i've tried other coding styles, using "with worksheet" etc. , code lot longer started on because every time fix something, else goes wrong. so, sticking basics. appreciated.

sub gensumrep()  dim autosr workbook dim asrsheet worksheet dim tempwb workbook dim datawb workbook dim secname string dim oldcell string dim nsname string dim csheet worksheet  set autosr = activeworkbook set asrsheet = autosr.activesheet  = 3 10      secname = asrsheet.range("d" & a).value      if secname <> ""      workbooks.open range("b" & a).value     set tempwb = activeworkbook     'tempwb.windows(1).visible = false      autosr.activate      workbooks.open range("c" & a).value     set datawb = activeworkbook     'datawb.windows(1).visible = false      autosr.activate          'copy paste data         b = 24 29         oldcell = range("c" & b).value             if b = 24             nsname = trim(secname) & " data"             set csheet = tempwb.sheets(nsname)             else             nsname = asrsheet.range("b" & b).value             set csheet = tempwb.sheets(nsname)             end if          'copy         datawb.activate         range(oldcell).select         range(selection, selection.end(xltoright)).select         range(selection, selection.end(xldown)).select         selection.copy          'paste         tempwb.activate         csheet.select         range("a1").select         selection.pastespecial paste:=xlpastevalues, operation:=xlnone, skipblanks _         :=false, transpose:=false         application.cutcopymode = false          b = b + 1         next b      end if  = + 1  next  end sub 

you error 1 reason: the name provided not exist in collection!

there couple of reasons based on code:

  • your nsname variable contains hidden characters make different though appears correct.
  • you looking sheet in wrong workbook.

based on comments, it seems looking in wrong workbook. way check out these subscript errors iterate collection , print out names included therein.

dim sht worksheet     each sht in tempwb.sheets     debug.print sht.name next sht 

in general, desirable rid of calls select , activate not relying on interface in order objects. see this post avoiding select , activate more info.

one idea applied code assign workbooks directly without activeworkbook:

set tempwb = workbooks.open(asrsheet.range("b" & a).value) set datawb = workbooks.open(asrsheet.range("c" & a).value) 

instead of:

    workbooks.open range("b" & a).value     set tempwb = activeworkbook     'tempwb.windows(1).visible = false      autosr.activate      workbooks.open range("c" & a).value     set datawb = activeworkbook     'datawb.windows(1).visible = false 

Comments

Popular posts from this blog

Java 3D LWJGL collision -

spring - SubProtocolWebSocketHandler - No handlers -

methods - python can't use function in submodule -