Board logo

標題: [發問] 請問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"
但數字以外的字元就必須使用雙引號標示,否則會被認定為變數名稱
執行下列程式,可了解
  1. Sub ex()
  2. MsgBox 1 & 2 & 3
  3. MsgBox "1" & "2" & "3"
  4. MsgBox "A" & "B" & "C"
  5. MsgBox ABC '此結果會顯示空字串
  6. 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/)