Board logo

標題: [發問] 請問offset(變數)該如何編寫 [打印本頁]

作者: lifedidi    時間: 2014-3-31 16:45     標題: 請問offset(變數)該如何編寫

請教各位先進

Offset是否可以用變數控制呢?想法如下!

小弟測試後 怪怪的 請教高手 謝謝!

x = "A1"

y = "0,0"
Sheet2.Range(x).Offset(y) = "A"

y = "1,3"
Sheet2.Range(x).Offset(y) = "B"

y = "3,1"
Sheet2.Range(x).Offset(y) = "C"
作者: c_c_lai    時間: 2014-3-31 17:28

回復 1# lifedidi
運算式  Offset(RowOffset, ColumnOffset)
RowOffset   
   選用 Variant 該範圍要位移的列數,
   可為正值、負值或 0 (零)。正值表示向下位移,
   負值表示向上位移。預設值為 0。
ColumnOffset
   選用 Variant 該範圍要位移的欄數,
   可為正值、負值或 0 (零)。正值表示向右位移,
   負值表示向左位移。預設值為 0。

以你目前之範例模式為解題:
  1. Sub Test()
  2.     Dim x As String, y As String
  3.    
  4.     x = "A1"

  5.     y = "0,0"
  6.     ' 錯誤引用: Sheet2.Range(x).Offset(y) = "A"
  7.     Sheet2.Range(x).Offset(Val(y), Val(Mid(y, InStr(y, ",") + 1))) = "A"
  8.    
  9.     y = "1,3"
  10.     ' 錯誤引用: Sheet2.Range(x).Offset(y) = "B"
  11.     Sheet2.Range(x).Offset(Val(y), Val(Mid(y, InStr(y, ",") + 1))) = "B"
  12.    
  13.     y = "3,1"
  14.     ' 錯誤引用: Sheet2.Range(x).Offset(y) = "C"
  15.     Sheet2.Range(x).Offset(Val(y), Val(Mid(y, InStr(y, ",") + 1))) = "C"
  16. End Sub
複製代碼

作者: GBKEE    時間: 2014-3-31 19:59

回復 1# lifedidi
  1. Option Explicit
  2. Sub Test()
  3.     Dim x As String, y As Variant
  4.     x = "A1"
  5.     y = "0,0"
  6.     y = Split(y, ",")
  7.     Sheet2.Range(x).Offset(y(0), y(1)) = "A"
  8.     y = "1,3"
  9.     y = Split(y, ",")
  10.     Sheet2.Range(x).Offset(y(0), y(1)) = "B"
  11.     y = "3,1"
  12.     y = Split(y, ",")
  13.     Sheet2.Range(x).Offset(y(0), y(1)) = "C"
  14. End Sub
複製代碼

作者: c_c_lai    時間: 2014-4-1 07:47

本帖最後由 c_c_lai 於 2014-4-1 08:39 編輯

回復 1# lifedidi
回復 3# GBKEE
應用 y = Split(y, ",") 更簡潔,亦是不錯的引用!
作者: yangjie    時間: 2014-4-1 23:19

回復 1# lifedidi
我想 你的問題是想位移向下 a 向右 b
        sheets("TEST").cells(i,j).offset(a,b)="試試看1"
此時 i,j,a,b 均可為變數
        sheets("TEST").cells(i,j).offset(,b)="試試看2"
空白表示維持原列或原欄
        不知有否幫助




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)