[爆卦]VBA 選取 有資料的儲存格是什麼?優點缺點精華區懶人包

為什麼這篇VBA 選取 有資料的儲存格鄉民發文收入到精華區:因為在VBA 選取 有資料的儲存格這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者nash30113 (生活藝術家)看板Office標題Re: [算表] VBA 中尋找最後一列非...


爬文發現想用VBA 中尋找最後一列非空白位置並選取範圍
參考了S大的說明可用迴圈if判斷的方式尋找到最後一列的位置
但完整程式碼該怎麼套以選取範圍新手還試不出來
可以請版上高手稍微示範一下嗎?
感謝!!

目前的程式碼如下:
Dim myRange As Range
For i = myRange.Row To 1 Step -1
If Range("A" & i) <> "" Then Exit For
Next

Set myRange = ThisWorkbook.Sheets("資料產出").Range("a2",
ActiveSheet.Range("a1".)Range("A" & i).End(xlToRight).End(xlToRight).End(xlToRight))

myRange.Select

End Sub

※ 引述《supisces (被~~~切~~~八~~~段)》之銘言:
: 軟體: Excel
: 版本: 2010
: Google 後查到以下程式碼可以找到最後一列的位置
: =============================================================
: Dim myRange As Range
: Set myRange = ThisWorkbook.Sheets(1).Range("B65536").End(xlUp) '表示在B欄
: 的最後一列
: myRange.Select
: Debug.Print myRange.Value
: Debug.Print myRange.Address
: Debug.Print myRange.Row
: Debug.Print myRange.Column
: MsgBox "值 : " & vbTab & myRange.Value & vbCr & _
: "位置: " & vbTab & myRange.Address & vbCr & _
: "列數: " & vbTab & myRange.Row & vbCr & _
: "行數: " & vbTab & myRange.Column & vbCr
: Set myRange = Nothing
: ==============================================================
: 但是經測試後發現,
: 這個方式並不管儲存格是否為空白.
: 如果最後一列的儲存格中有公式,
: 但是結果為空白,
: 請問該如何寫 VBA?

--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.24.150.75
※ 文章網址: https://www.ptt.cc/bbs/Office/M.1524972052.A.FE0.html
newacc: 不考慮用Range 04/29 11:24
newacc: 不小心按到送出... 04/29 11:24
newacc: 不考慮用Range("A" & Columns.Count).End(XlToLeft)嗎? 04/29 11:25
newacc: 不對,你是想要找到A欄最後一筆資料位置,還是第1列最右邊 04/29 11:29
newacc: 的資料? 04/29 11:29
newacc: 然後你的程式第二行,你沒有先Set myRange,所以myRange現 04/29 11:30
newacc: 在是Nothing,所以會跳錯誤 04/29 11:31
不好意思以下再補充說明
我是想選取一個範圍
我的想法是先尋找A欄中最個一個非空白的值儲存格
再往右選取到最右邊那欄
現在主要卡在判斷尋找最後一個非空白值的儲存格後
該怎麼套用的選取的範圍
感謝!
※ 編輯: nash30113 (114.24.150.75), 04/29/2018 11:39:25
soyoso: 要以迴圈的話,可以i =1048576(或65536),缺點效率不好 04/29 11:37
newacc: 剛睡醒真的不適合用手機打code... 04/29 11:38
newacc: 你要找A欄最後一筆資料用這個: 04/29 11:38
newacc: Range("A" & Rows.Count).End(xlUp) 04/29 11:38
soyoso: 判斷最後一列出現的列號或儲存格用的是range.end(參數) 04/29 11:39
newacc: 你要找第1列最右邊資料用這個: 04/29 11:39
soyoso: 參數為xlup或xldown 04/29 11:39
newacc: Cells(1, Columns.Count).End(xlToLeft) 04/29 11:40
soyoso: xlup為可能有非連續儲存格且有可能只有單一儲存格有值時使 04/29 11:40
soyoso: 用,xldown則為連續儲存格且複數以上 04/29 11:40
感謝newacc的code
目前套用會選到有公式的空白儲存格
所以才會用S大的建議套用if的判斷式
但不知道判斷後該怎麼套進選取範圍
實例如附檔 我想選取檔案中Sheets"資料產出"非空白儲存格範圍(如A2:C6)
檔案連結:https://goo.gl/jtLdXw
※ 編輯: nash30113 (114.24.150.75), 04/29/2018 12:01:53
newacc: https://i.imgur.com/VIuYQXk.png 04/29 11:53
newacc: 想補充S大的做法,除非你很確定資料格式,否則不要用 04/29 12:00
newacc: xlDown或xlToRight,有可能會直接選到最尾端的空白格 04/29 12:01
newacc: 像是你原本的code連用三次xlToRight,如果該列資料是連續 04/29 12:02
newacc: 的,就會選到最右邊的空白,也就是XFD欄 04/29 12:03
newacc: 噢,原來是因為有公式的關係,那我會用一個do loop來調整 04/29 12:07
newacc: 往上找的次數,稍等 04/29 12:07
soyoso: 選取a2:c6的話,range.resize配合工作表函數count 04/29 12:14
soyoso: https://i.imgur.com/gsSwBj4.jpg 04/29 12:14
newacc: 實作發現end模式不會理會公式的結果,要搭配count計算資料 04/29 12:22
newacc: 筆數,但就是資料一定要連續 04/29 12:22
nash30113: 感謝N大的解說及S大提供的範例!! 我再研究一下~ 04/29 12:43
soyoso: 更正一下11:39的回文,應是range.end(參數direction) 02/15 16:11

你可能也想看看

搜尋相關網站