Board logo

標題: [發問] vba上沒辦法直接讀取C2/B5等儲存格的數值 [打印本頁]

作者: jiuhtsair    時間: 2019-2-19 19:41     標題: vba上沒辦法直接讀取C2/B5等儲存格的數值

本帖最後由 jiuhtsair 於 2019-2-19 19:43 編輯

這問題可能超級入門,才剛學習使用巨集/vba第二天..
但想請版上先進稍微提點一下,這樣問題要利用什麼關鍵字來搜尋才能找到相關解法

我打算利用vba來幫完成把某幾列給隱藏起來的工作,
首先利用錄製巨集功能,把2~137列給隱藏起來,得到下面程式碼
Sub hide()
'
' hide巨集
'
    Rows("2:137").Select
    Range("C137").Activate
    Selection.EntireRow.Hidden = True
End Sub

接著我想要把隱藏的列從2~137改成2~某a列
a列的數值我在表單裡面透過以下公式算出來了
a=MATCH(TODAY(),A2:A207,0)
頁面上也顯示算出來的值是137

然後打算把這個公式直接放進vba程式碼中,就出現bug了無法執行
    Rows("2:MATCH(TODAY(),A2:A207,0)").Select
換一個方式,直接指定這個a值的所在位置V212套入公式中,也是一樣的狀況無法執行
    Rows("2:V212").Select

請問在這種情況下,要如何讓vba讀取excel表單中的數值?
作者: 准提部林    時間: 2019-2-20 10:01

本帖最後由 准提部林 於 2019-2-20 10:03 編輯

V212為公式值:=MATCH(TODAY(),A2:A207,0)
Rows("2:" & range("V212") +1 ).Select

Rows("2:" & [V212] +1 ).Select

============================
V212為公式值:=MATCH(TODAY(),A:A,0)
Rows("2:" & range("V212")).Select

Rows("2:" & [V212]).Select
作者: 准提部林    時間: 2019-2-20 10:05

不用儲存格公式
Dim Mh
Mh = Application.Match(CLng(Date), [A:A], 0)
If IsError(Mh) Then Exit Sub
Rows("2:" & Mh).Select
作者: 准提部林    時間: 2019-2-20 10:09

Sub Macro1()
Dim Mh
Cells.EntireRow.Hidden = False '取消隱藏行
Mh = Application.Match(CLng(Date), [A:A], 0) '取得當日日期位置
If IsError(Mh) Then Exit Sub '若找不到當日, 跳出
Rows("2:" & Mh).EntireRow.Hidden = True '隱藏行
End Sub
作者: jiuhtsair    時間: 2019-2-20 20:10

回復 2# 准提部林

謝謝您提供上述的寫法,成功地執行了我想要的動作
我會再看看相關的章節學習

下方兩個不利用儲存格的運算也加入我的筆記中
未來學到這部分的時候可以再拿出來理解一次

太感謝了!




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)