返回列表 上一主題 發帖

[發問] vba上沒辦法直接讀取C2/B5等儲存格的數值

[發問] 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表單中的數值?
50 字節以內
不支持自定義 Discuz! 代碼

本帖最後由 准提部林 於 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

TOP

不用儲存格公式
Dim Mh
Mh = Application.Match(CLng(Date), [A:A], 0)
If IsError(Mh) Then Exit Sub
Rows("2:" & Mh).Select

TOP

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

TOP

回復 2# 准提部林

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

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

太感謝了!
50 字節以內
不支持自定義 Discuz! 代碼

TOP

        靜思自在 : 要比誰更受誰.不要比誰更怕誰。
返回列表 上一主題