[問題] excel vba型態不符合

看板Office作者 (PTT分身就是個黑天鵝)時間9年前 (2016/09/29 21:44), 編輯推噓1(1045)
留言46則, 3人參與, 最新討論串1/1
軟體: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

09/29 21:55, , 1F
感覺上應該不用if
09/29 21:55, 1F

09/29 21:55, , 2F
我想想看
09/29 21:55, 2F

09/29 22:28, , 3F
抱歉,我目前還沒辦法找出問題=,=
09/29 22:28, 3F

09/29 22:30, , 4F
我目前有發現一個問題
09/29 22:30, 4F

09/29 22:30, , 5F
rng1 經過第一行的運算後 他是一個"範圍"
09/29 22:30, 5F

09/29 22:31, , 6F
所以你目前if 等於說,他會用整個範圍去對照usd
09/29 22:31, 6F

09/29 22:31, , 7F
應該要想辦法改成這個範圍中的最後一個L
09/29 22:31, 7F

09/29 22:31, , 8F
或者L中最下面那個格子
09/29 22:31, 8F

09/29 23:08, , 9F
我寫到這邊
09/29 23:08, 9F

09/29 23:08, , 10F
但後我後面寫不大出來= =
09/29 23:08, 10F

09/29 23:08, , 11F
...我沒存到檔
09/29 23:08, 11F

09/29 23:10, , 12F
我剛設dim rng2 as Integer ,rng3 as Integer
09/29 23:10, 12F

09/29 23:12, , 13F
我是先把rng2的row值,去用L排抓出來
09/29 23:12, 13F

09/29 23:13, , 14F
rng3 會去抓出rng2最後那格的.value
09/29 23:13, 14F

09/29 23:13, , 15F
然後text1="usd"
09/29 23:13, 15F

09/29 23:13, , 16F
If rng3.Value Like text1 Then
09/29 23:13, 16F

09/29 23:13, , 17F
就會過去了
09/29 23:13, 17F

09/29 23:14, , 18F
但是要把rng1 的row在加上1 這裡我就卡住了
09/29 23:14, 18F

09/29 23:23, , 19F
如判斷儲存格L欄內是否有出現"USD",可用range.find
09/29 23:23, 19F

09/29 23:23, , 20F
09/29 23:23, 20F

09/29 23:24, , 21F
哇嗚 難怪我用.value 都沒辦法 感謝指導
09/29 23:24, 21F

09/29 23:25, , 22F
range.find的方式,再請至msdn內看一下
09/29 23:25, 22F

09/30 00:23, , 23F
我在試試看 謝謝!!
09/30 00:23, 23F

09/30 00:36, , 24F
所以用like不行嗎?我用instr也不行
09/30 00:36, 24F

09/30 00:37, , 25F
另外想問一下,一定要用if not find nothing嗎?可以用if
09/30 00:37, 25F

09/30 00:37, , 26F
find = true之類的肯定句嗎?純粹想知道為什麼要這樣用~
09/30 00:37, 26F

09/30 00:45, , 27F
range.find無搜尋到回傳的值是nothing
09/30 00:45, 27F

09/30 00:46, , 28F
可用like,如 http://imgur.com/S8I6QdY
方式
09/30 00:46, 28F

09/30 01:11, , 29F
09/30 01:11, 29F

09/30 01:27, , 30F
如要取得布林值的話iserror配合application.match方式
09/30 01:27, 30F

09/30 01:29, , 31F
worksheetfunction.countif方面也可使用
09/30 01:29, 31F

09/30 08:47, , 32F
大感謝!
09/30 08:47, 32F

09/30 12:09, , 33F
不好意思,我想在請問一下,如果我要find USD或HKD,要怎
09/30 12:09, 33F

09/30 12:09, , 34F
麼寫呢
09/30 12:09, 34F

09/30 12:15, , 35F
數量2個的話,加上個if判斷,或的話以or
09/30 12:15, 35F

09/30 12:18, , 36F
數量增加,為了不要讓判斷的巨集程式碼過長,可加上迴圈來
09/30 12:18, 36F

09/30 12:18, , 37F
帶要尋找的字串
09/30 12:18, 37F

09/30 12:31, , 38F
3Q!
09/30 12:31, 38F

10/11 15:21, , 39F
後來我常常也有這種症狀發生
10/11 15:21, 39F

10/11 15:22, , 40F
聽說
10/11 15:22, 40F

10/11 15:22, , 41F
你把rng1 給他前面定義 double 或# 或者改成cdbl(rng1)
10/11 15:22, 41F

10/11 15:23, , 42F
我常常吃了許多型態不符合的悶虧 但現在還有點一知半解
10/11 15:23, 42F

10/11 15:27, , 43F
或者前面不要dim rng1
10/11 15:27, 43F

10/11 15:30, , 44F
不然就再試試陣列宣告
10/11 15:30, 44F

10/11 15:30, , 45F
Dim Array(10) As Integer ' 一維
10/11 15:30, 45F

10/11 15:30, , 46F
Dim Array()
10/11 15:30, 46F
文章代碼(AID): #1NxHgZum (Office)
文章代碼(AID): #1NxHgZum (Office)