[問題] VBA 從第二列,到最後一列

看板Office作者 (Terry)時間9年前 (2014/09/22 15:07), 9年前編輯推噓0(0028)
留言28則, 2人參與, 最新討論串1/1
軟體: M$ OFFICE EXCEL 版本: 2010 請教一下, 原本我是寫這樣子 sheet.Range("A65536").End(xlUp) 那這樣子的寫法會從第一列找到最後一列 可是我第一列想要放標題 所以我改寫成這個樣子 sheet.Range("A2:A" & sheet.Range("A65536").End(xlUp)) 但是這樣子的寫法執行起來好像怪怪的...冏 想請教前輩們,如果要從第二列開始執行,應該要怎麼寫呢? 謝謝指教了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.120.19.22 ※ 文章網址: http://www.ptt.cc/bbs/Office/M.1411369674.A.849.html

09/22 16:05, , 1F
range([a2],[A65536].End(xlUp))
09/22 16:05, 1F

09/22 16:34, , 2F
請教一下,他說RANGE方法失敗耶@@
09/22 16:34, 2F
Set myRange = sheet.Range([A2], [A65536].End(xlUp)) 我是這樣子寫,可是他說失敗T_T ※ 編輯: bernachom (59.120.19.22), 09/22/2014 16:35:48

09/22 16:44, , 3F
原po是希望例如從工作表1去指定工作表2的範圍嗎?
09/22 16:44, 3F
沒有耶@@ 我只是要做從第一個SHEET的第二列到最後一列尋找這樣子而已 sheet.Range("A65536").End(xlUp) 因為上面這樣子寫他會從頭找到尾 可是我要從第二列開始,就卡關了..T_T ※ 編輯: bernachom (59.120.19.22), 09/22/2014 16:47:07

09/22 16:47, , 4F
如果是的話要寫range(sheet.[a2].sheet.[a65536].end(xlup
09/22 16:47, 4F

09/22 16:48, , 5F
))
09/22 16:48, 5F

09/22 16:48, , 6F
如果不是的話那前的sheet是指??
09/22 16:48, 6F
我好像看懂你的意思了@@ 我會去開啟特定的excel 裡面的sheet 所以你說的是對的,我會去指定某個sheet的 第二列到最後一列@@ ※ 編輯: bernachom (59.120.19.22), 09/22/2014 16:52:18

09/22 16:51, , 7F
09/22 16:51, 7F

09/22 16:52, , 8F
range([a2],[A65536].End(xlUp)) 這樣寫並無出現錯誤訊息
09/22 16:52, 8F

09/22 16:58, , 9F
可是我前面加個SHEET他就ERROR了@@
09/22 16:58, 9F
Option Base 0 Sub LoopThroughSheets() Dim xlApp As Excel.Application Dim xlBook As Excel.Workbook Set xlApp = New Excel.Application Set xlBook = xlApp.Workbooks.Open("D:\REPLACE.xlsx") ' extension Dim sheet As Excel.Worksheet Set sheet = xlBook.Worksheets(1) Dim ws As Worksheet For Each ws In Sheets Dim myRange As Range Dim myReplace As Range Set myRange = Range([A2], [A65536].End(xlUp)) '前面加SHEET會ERROR Set myReplace = Range([B2], [B65536].End(xlUp)) '前面加SHEET會ERROR myRange.Select myReplace.Select For RangeIndex = 1 To myRange.Row Step 1 ' MsgBox (sheet.Cells(RangeIndex, 1)) ReplaceText sheet.Cells(RangeIndex, 1), sheet.Cells(RangeIndex, 2), ws Next RangeIndex Set myRange = Nothing Next MsgBox ("取代完成") xlApp.Workbooks.Close End Sub Function ReplaceText(src As String, Rpl As String, sht As Worksheet) sht.Cells.Replace What:=src, Replacement:=Rpl, LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ ReplaceFormat:=False End Function ※ 編輯: bernachom (59.120.19.22), 09/22/2014 16:59:30

09/22 16:59, , 10F
同個工作表ok 不同工作表指定要用range(sheet.[a2],sheet.
09/22 16:59, 10F

09/22 17:00, , 11F
[a65536].end(xlup))的方式 http://goo.gl/MliGzy連結重下
09/22 17:00, 11F
不好意思,請教一下 Set myRange = Range(Sheets("Sheet1").[A2], Sheets("Sheet1").[A65536].End(xlUp)) 我先試著寫這一行,結果他說陣列索引超出範圍,想請您請教一下T_T 謝謝了. ※ 編輯: bernachom (59.120.19.22), 09/22/2014 17:08:32

09/22 17:21, , 12F
sheet.[A2].Resize(sheet.[A:A].Find("").Row-2) 試試
09/22 17:21, 12F

09/22 17:26, , 13F
或是sheet.Range("A2:A" & sheet.[a65536].End(xlUp).Row)
09/22 17:26, 13F
可是感覺就是怪怪的@@ 好像變成他會找A1 A2 然後A3就不會了@@ 我再試試看.. ※ 編輯: bernachom (59.120.19.22), 09/22/2014 17:29:34

09/22 17:31, , 14F
那是因為迴圈myRange.Row要改寫myRange.Rows.count
09/22 17:31, 14F
有點不太明白, 因為我寫成這個樣子 Set myRange = sheet.Range("A2:A" & sheet.[A65536].End(xlUp).Row) Set myReplace = sheet.Range("B2:B" & sheet.[B65536].End(xlUp).Row) 他應該會從第二列開始找,可是他還是一樣會去找第一列T_T ※ 編輯: bernachom (59.120.19.22), 09/22/2014 17:38:27

09/22 18:10, , 15F
是指取代還是從第一列找嗎?
09/22 18:10, 15F

09/22 18:11, , 16F
如果是的話這是因為迴圈起始值為1的關係
09/22 18:11, 16F

09/22 18:11, , 17F
For RangeIndex = 1
09/22 18:11, 17F

09/22 18:16, , 18F
真的@@ ,我剛也在想是不是這個關係,結果真的像你說的
09/22 18:16, 18F

09/22 18:17, , 19F
改2就好了,謝謝:)
09/22 18:17, 19F

09/22 18:21, , 20F
myrange.rows.count 這裡要+1喔
09/22 18:21, 20F

09/22 18:45, , 21F
也可用for each...next http://goo.gl/MVVCLH 就不用在起
09/22 18:45, 21F

09/22 18:45, , 22F
始值修改了
09/22 18:45, 22F

09/22 19:05, , 23F
09/22 19:05, 23F

09/22 19:07, , 24F
好的,我參考一下,謝謝您:)
09/22 19:07, 24F

09/22 19:35, , 25F
可是我想請教一下, ROWS.COUNT+1的話,最後一行
09/22 19:35, 25F

09/22 19:36, , 26F
他就不會尋找了耶??為什麼要加一呢?
09/22 19:36, 26F

09/22 19:44, , 27F
因覺得myrange不含a1,列數會少1,因此才寫到要+1,如果不
09/22 19:44, 27F

09/22 19:45, , 28F
加時是符合原po要的結果的話,就依您實際情況
09/22 19:45, 28F
文章代碼(AID): #1K7yhAX9 (Office)