標題:
[發問]
請問Range內有變數的寫法
[打印本頁]
作者:
sweetkitty
時間:
2012-1-30 18:15
標題:
請問Range內有變數的寫法
請問各位~ 我在別人的VBA中看到這個程式
x1x = InputBox("請輸入開始row")
x2x = InputBox("請輸入結束row")
Range("A1:B1").Value = Range("A" & x1x & ":B" & x1x & "").Value
Range("A2:B2").Value = Range("A" & x2x & ":B" & x2x & "").Value
我想請問Range中的 ("A" & x1x & ":B" & x1x & "") 一堆 " " 和 & 是怎麼來的?
另外想請問Cell和Range都是表示位置
但一個是類似坐標表示法,另一個是直接的位置(ex:C3)表示法
我常常搞不清楚要用哪種表示法 or 要不要加上 " "
請問大家在描述的時候有沒有什麼特別的記憶方法呢?
感謝!!
作者:
GBKEE
時間:
2012-1-30 19:49
回復
1#
sweetkitty
&
: 連接符號: 連接字串 或數字 前後接須空一格
例如 x1x=10
"A" & x1x & ":B" & x1x ->字串 "A10:B10"
" ABC" : 字串
"" : 空字串
[A = 1 & 2 ---> "12" 為字串
A=12 & "" --->" 12" 為字串
Range :範圍 Range("A10:B10" ).Select
cells: 細胞 單元. Range(Cells(10, "A"), Cells(10, "B")).Select
作者:
homeman
時間:
2012-1-31 00:10
請問先進, 使用 cells(10,"a") & cells(10,1 ) 兩者寫的方式, 在速度上會有很大的差異嗎 ?
我通常都使用 cells(10,1) 的方式寫, 不過, 欄位多了後, 就還要一個欄位一個欄位數..
作者:
GBKEE
時間:
2012-1-31 09:52
回復
3#
homeman
cells(10,"a") , cells(10,1 ) 欄位參數 差別在用 數字 或 字母字串 ,不知與速度有何關係.
作者:
sweetkitty
時間:
2012-1-31 10:26
回復
2#
GBKEE
您好~ 非常感謝您的回答
&前後必須空格也是規定阿?
如果不常寫的話真的很難記得呢 >"<
另外請問
Range :範圍 Range("A10:B10" ).Select
cells: 細胞 單元. Range(Cells(10, "A"), Cells(10, "B")).Select
上面的要加上 " " , 底下的不用
又是什麼道理呢?
作者:
GBKEE
時間:
2012-1-31 11:11
回復
5#
sweetkitty
上面的要加上 " " , 底下的不用 又是什麼道理呢?
請看 3# 4# 可嘹解
作者:
sweetkitty
時間:
2012-1-31 12:22
回復
6#
GBKEE
所以是數字和字串的差別嗎?
感謝你 ^^
作者:
Hsieh
時間:
2012-1-31 15:03
回復
7#
sweetkitty
你的問題都是基本語法問題
語法就是程式的文法,使用者要與電腦溝通,就必須遵守這些規則
所謂字串也就是任何字元的常數,被雙引號" "標示起來就叫做字串
如1,2,3等數字原本是數值型態的字元,加上雙引號以後"1","2","3"就變成了字串形態的資料
字串的連接符號就是&,將字串已&符號連接時必須以空白鍵分隔
例如1,2,3這3個數字要連接成123,必須使用&
1 & 2 & 3或"1" & "2" & "3"
但數字以外的字元就必須使用雙引號標示,否則會被認定為變數名稱
執行下列程式,可了解
Sub ex()
MsgBox 1 & 2 & 3
MsgBox "1" & "2" & "3"
MsgBox "A" & "B" & "C"
MsgBox ABC '此結果會顯示空字串
End Sub
複製代碼
RANGE與CELLS請參考VBA說明
1. Range 屬性
可用 Range(arg) 傳回代表單個儲存格或儲存格範圍的 Range 物件,其中 arg 為範圍名稱(字串型態)。
2. Cells 屬性
可用 Cells(row, column) 傳回單個儲存格,其中 row 為列索引,column 為欄索引。(索引為欄列的編號,其中column可使用欄名稱字串)
3. Range 和 Cells
可用 Range(cell1, cell2) 傳回 Range 物件,其中 cell1 和 cell2 為指定起始和終止位置的 Range 物件。
作者:
sweetkitty
時間:
2012-1-31 18:14
感謝超級版主的回應... 我的問題真是超初級的阿... 拍水 >///<
作者:
homeman
時間:
2012-1-31 21:59
回復
4#
GBKEE
:P 因為以 range & cells 的寫法, 速度上真的有差, 所以, 問了一個笨問題, 謝謝您的回覆.
作者:
Hsieh
時間:
2012-1-31 22:20
回復
10#
homeman
速度應該不是在RANGE或CELLS的寫法
可能是你在運算其位址字串與欄列號的方法出現差異
不妨將您測試的程式貼上來看看
作者:
homeman
時間:
2012-1-31 22:53
回復
11#
Hsieh
sir , 或許長久以來,一直有著錯誤的觀念, 我會試著將一支大的程式去驗證, 如果對於這個議題仍有不同的看法, 我再把 sample 丟上來,, 再麻煩您協助確認. Thanks
作者:
sweetkitty
時間:
2012-2-1 18:26
回復
8#
Hsieh
不好意思我還是有點confuse
1. Range 屬性
可用 Range(arg) 傳回代表單個儲存格或儲存格範圍的 Range 物件,其中 arg 為範圍名稱(字串型態)。
以下兩行表示的是同樣的東西
Range("A1").Value = "A1"
Range("A" & 1).Value = "A1"
Range裡面要
字串型態
的範圍名稱,所以("A1")沒有問題
但是("A" & 1) 不是
字串
加上
數值
兩種型態的混合嗎?
總覺得這兩種表示法具有不同型態...
作者:
Hsieh
時間:
2012-2-1 18:44
回復
13#
sweetkitty
只要用&連接後都成了字串型態
作者:
register313
時間:
2012-2-1 18:52
本帖最後由 register313 於 2012-2-1 19:38 編輯
回復
13#
sweetkitty
Range("A1") => 直接說明A1 (字串)
Range("A" & 1) => "A"連接1(字串連接數字)(這算是字串) => 也是A1(字串)
兩者是相同的,都是指A1儲存格
Range("A" & A) 若先指定變數A之值=1 => "A"連接變數(字串連接變數(變數之值=1))(這算是字串) => 也是A1(字串)
Range(A & 1) 若先指定變數A之值="A" => => 也是A1(字串)
數字以外的字元必須使用雙引號標示,否則會被認定為變數名稱
作者:
sweetkitty
時間:
2012-2-2 15:06
感謝register313 大大的補充說明!
現在我非常清楚的了解了 ^^
作者:
handsometrowa
時間:
2013-6-24 15:56
Range & Cell 之間的互相應用
真的蠻多種轉換的
我爬文回去 沒有想到當年就有人問過了
受教了^^
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)