iT邦幫忙

0

VBA 將字串 改為 函數~~有這樣的指令嗎?

各位前輩好~~以下小段的VBA 指令
有個部份的使用方法比較特別
已經查過很多文章 似乎都沒有人討論過
在此請教 看有沒有能 幫忙

A1 = "09:00"
A2 = "10:00"
B = "A1"
C = CStr(B)

我的目地是 C的內容是要 "09:00"
但是 B是用字串 是算出來的
B是變數
用過 C = CStr(B) 或是 C = CVar(B)
都不行 有前輩能點解一下?

paicheng0111 iT邦研究生 1 級 ‧ 2018-09-21 22:06:45 檢舉
VBA指令?我沒有看到Sub、Function或Dim。
eva09qq iT邦新手 5 級 ‧ 2018-09-22 08:02:49 檢舉
pcw 大大 vba 可以不用dim
然後 這個 就是 簡單寫
比較重要的內容部份而已
所以 sub function 就省略了
功能有出來比較重要,感謝您的熱心

2 個回答

1
marlin12
iT邦新手 2 級 ‧ 2018-09-21 21:38:37
最佳解答

VBA是不支援dynamic variable name,但是可以用dictionary物件來模擬的。

Dim dict
Set dict = CreateObject("Scripting.Dictionary")
dict("A1") = "09:00"
dict("A2") = "10:00"

Dim B, C As String
B = "A1"

C = dict(B)
Debug.Print "C = " & C      ' result "C = 09:00"

dict("A1") = "20:00"

C = dict(B)
Debug.Print "C = " & C      ' result "C = 20:00"
eva09qq iT邦新手 5 級 ‧ 2018-09-22 08:01:13 檢舉

非常感謝 Marlin12 大大
完全是正確解答 不知道有dictionary這指令可用
其實要的就是 dynamic variable name的功能
真的是高手在民間呢 再次感謝您~~

marlin12 iT邦新手 2 級 ‧ 2018-09-22 14:28:08 檢舉

過奬了,這裏的前輩都比我強呢

0
wwx
iT邦好手 1 級 ‧ 2018-09-22 07:27:48

是不是EXCEL中的VBA想要這樣的結果?

A1 = "09:00"
A2 = "10:00"
B = "A1"
C = Range(B)

如果A1儲存格的格式是文字
那麼 C 就是 "09:00"

如果A1儲存格格式沒有特別指定的話是通用
那麼 09:00 的內容會被EXCEL解釋為自定hh:mm
實際內容是數值 0.375
也就是 0.375天
換算成小時 0.375 * 24小時 = 9小時
就是代表 9點 (09:00)

wwx iT邦好手 1 級 ‧ 2018-09-22 07:44:21 檢舉

可以用
D = Range(B).Text
確保 D 的內容直接是文字字串

eva09qq iT邦新手 5 級 ‧ 2018-09-22 08:06:22 檢舉

wwx 感謝回答
這個完全沒有用到 儲存格的讀取
上面大大有回答 要的就是 dynamic variable name的功能
動態的變量名稱

我要發表回答

立即登入回答