→ soyoso: 會一直寫在18的話,應是變數array_counter沒有累加 09/09 11:34
→ soyoso: 只有在array_counter只有在迴圈外做了一次的index_row+1 09/09 11:35
→ soyoso: index_row為17+1=18 09/09 11:36
→ soyoso: .activesheet.cells(array_counter,i)方面改為 09/09 11:37
→ soyoso: .activesheet.cells(array_counter+m,n)=....的方式試試 09/09 11:38
感謝soyoso大大的回應,arraycounter的用處其實是在找下一個資料的其始點
下圖是B檔案的資料內容
https://imgur.com/b6GL4qP
其中灰色所選取的部分就是巢狀迴圈所讀取的資料,是一個2維陣列
下圖是A檔案的資料內容
https://imgur.com/8iyeWnO
arraycounter用於找最後一筆資料的所在位置+1後變成資料寫入的起始點,而資料從2維
陣列變成1維陣列。所以理當,arraycounter不需要參與迴圈疊加才是。
我核心的問題是為什麼找最後一列的Code放在原來的位置跟With A會有不一樣的結果。
不管檔案A的資料量有多少,不管中間是否有空白他都會從第18行開始寫。
https://imgur.com/4ph5m4q
感謝您一直耐心地回應問題。
※ 編輯: yimean (123.195.98.141), 09/09/2018 12:03:19
→ yimean: Soyoso大大我有更新資料了喔。 09/09 12:04
→ soyoso: 那a檔案從儲存格a1,按下ctrl+↓(向下鍵)是10還是17 09/09 12:43
→ soyoso: 測試從b欄執行原文巨集,開啟a檔,可取得儲存格a1往下的連 09/09 12:58
→ soyoso: 續儲存格的最後一個,如有公式的話也會取到 09/09 12:58
→ soyoso: 從原po提供的連結來看,看不出是否有公式已在a欄內 09/09 12:59
→ yimean: 按下ctrl+↓所得到的是10,沒有公式,下方連結是錄影。 09/09 14:33
→ yimean: 感謝您 09/09 14:33
※ 編輯: yimean (123.195.98.141), 09/09/2018 14:36:13
→ soyoso: 那將index_row = fileA.ActiveSheet.Range("A1"). 09/09 14:36
→ soyoso: End(xlDown).Row 來抓看是否是10 09/09 14:36
※ 編輯: yimean (123.195.98.141), 09/09/2018 14:44:28
→ soyoso: 回文打的是end().row不是end().select 09/09 14:44
→ soyoso: 如果寫在這裡的話,上面thisworkbook.activate就回到b檔 09/09 14:46
→ soyoso: with fileA...end with內不一定是作用活頁簿就是在a檔 09/09 14:47
→ yimean: 喔喔喔 我改一下,Sorry 09/09 14:48
→ soyoso: 錯誤是,不是用range.select要用range.row來回傳列號給變 09/09 14:48
→ soyoso: 數index_row 09/09 14:48
→ soyoso: 所以有可能回傳17是因為作用活頁簿於b檔內 09/09 14:49
→ yimean: 正確的寫進去第11列了 09/09 14:50
→ soyoso: 如果已經在with fileA...end with的話,則以 .activesheet 09/09 14:50
→ soyoso: .range("a1").end(xldown).row,index_column亦同 09/09 14:51
→ yimean: 太神奇了,所以,請教一下With所有作用的不是在指定範圍? 09/09 14:51
→ soyoso: 或是將作用活頁簿調整到a檔,於with fileA下方打上 09/09 14:52
→ yimean: 這個觀念我不是很懂,如果是這樣With的功能不就弱化了? 09/09 14:52
→ soyoso: .activate 這時作用活頁簿為a檔 09/09 14:52
→ soyoso: with...end with是用來簡化語法用 09/09 14:54
→ soyoso: 當作用活頁簿為a檔時,就可以原本activesheet.range(..). 09/09 14:56
→ yimean: 學到了一個技巧,感謝您。確實可以這樣使用。 09/09 14:56
→ soyoso: end(xldown).select,index_row=selection.row來取得列號 09/09 14:57
→ yimean: 所以如果後面要切回B檔時只要加上thisworkbook.activate 09/09 14:58
→ soyoso: 因此'=====寫入檔案====的這個部分也可不用with..end with 09/09 14:58
→ yimean: 就可以了,對嗎? 09/09 14:58
→ soyoso: 就只要是fileA.activate那之後就都在a檔案內操作 09/09 14:59
→ soyoso: 也無需 .activesheet前面的.(點號)了 09/09 14:59
→ soyoso: 如原po所述,要回b檔時加上該activate來切回 09/09 15:00
→ yimean: 感恩指導,謝謝。 09/09 15:04