作者s212gj (PTT分身就是個黑天鵝)
看板Office
標題[問題] excel vba型態不符合
時間Thu Sep 29 21:44:00 2016
軟體:excel
版本:2013
自定義一個range
Set rng1 = Range(Cells(2, 1), Cells([a2].End(xlDown).Row,
[a2].End(xlToRight).Column))
如果在rng1的L欄位裡有USD的字樣的話,讓他在這個rng最後一列下,再插入一列
我寫:
If rng1.Columns("L:L") Like "USD" Then
這句跳出型態不符合
不知道哪裡有問題想好久><
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.193.164.72
※ 文章網址: https://www.ptt.cc/bbs/Office/M.1475156643.A.E30.html
→ waiter337: 感覺上應該不用if 09/29 21:55
→ waiter337: 我想想看 09/29 21:55
→ waiter337: 抱歉,我目前還沒辦法找出問題=,= 09/29 22:28
→ waiter337: 我目前有發現一個問題 09/29 22:30
→ waiter337: rng1 經過第一行的運算後 他是一個"範圍" 09/29 22:30
→ waiter337: 所以你目前if 等於說,他會用整個範圍去對照usd 09/29 22:31
→ waiter337: 應該要想辦法改成這個範圍中的最後一個L 09/29 22:31
→ waiter337: 或者L中最下面那個格子 09/29 22:31
→ waiter337: 我寫到這邊 09/29 23:08
→ waiter337: 但後我後面寫不大出來= = 09/29 23:08
→ waiter337: ...我沒存到檔 09/29 23:08
→ waiter337: 我剛設dim rng2 as Integer ,rng3 as Integer 09/29 23:10
→ waiter337: 我是先把rng2的row值,去用L排抓出來 09/29 23:12
→ waiter337: rng3 會去抓出rng2最後那格的.value 09/29 23:13
→ waiter337: 然後text1="usd" 09/29 23:13
→ waiter337: If rng3.Value Like text1 Then 09/29 23:13
→ waiter337: 就會過去了 09/29 23:13
→ waiter337: 但是要把rng1 的row在加上1 這裡我就卡住了 09/29 23:14
→ soyoso: 如判斷儲存格L欄內是否有出現"USD",可用range.find 09/29 23:23
推 waiter337: 哇嗚 難怪我用.value 都沒辦法 感謝指導 09/29 23:24
→ soyoso: range.find的方式,再請至msdn內看一下 09/29 23:25
→ s212gj: 我在試試看 謝謝!! 09/30 00:23
→ s212gj: 所以用like不行嗎?我用instr也不行 09/30 00:36
→ s212gj: 另外想問一下,一定要用if not find nothing嗎?可以用if 09/30 00:37
→ s212gj: find = true之類的肯定句嗎?純粹想知道為什麼要這樣用~ 09/30 00:37
→ soyoso: range.find無搜尋到回傳的值是nothing 09/30 00:45
→ soyoso: 如要取得布林值的話iserror配合application.match方式 09/30 01:27
→ soyoso: worksheetfunction.countif方面也可使用 09/30 01:29
→ s212gj: 大感謝! 09/30 08:47
→ s212gj: 不好意思,我想在請問一下,如果我要find USD或HKD,要怎 09/30 12:09
→ s212gj: 麼寫呢 09/30 12:09
→ soyoso: 數量2個的話,加上個if判斷,或的話以or 09/30 12:15
→ soyoso: 數量增加,為了不要讓判斷的巨集程式碼過長,可加上迴圈來 09/30 12:18
→ soyoso: 帶要尋找的字串 09/30 12:18
→ s212gj: 3Q! 09/30 12:31
→ waiter337: 後來我常常也有這種症狀發生 10/11 15:21
→ waiter337: 聽說 10/11 15:22
→ waiter337: 你把rng1 給他前面定義 double 或# 或者改成cdbl(rng1) 10/11 15:22
→ waiter337: 我常常吃了許多型態不符合的悶虧 但現在還有點一知半解 10/11 15:23
→ waiter337: 或者前面不要dim rng1 10/11 15:27
→ waiter337: 不然就再試試陣列宣告 10/11 15:30
→ waiter337: Dim Array(10) As Integer ' 一維 10/11 15:30
→ waiter337: Dim Array() 10/11 15:30