Board logo

標題: 請教複製到不同的工作表無法起作用 ?如何修改? [打印本頁]

作者: t8899    時間: 2014-8-24 09:53     標題: OFFSET

選擇某範圍,如何求得offset 的值?
例如  A1:B2 即A1 移到 B2 則答案為 OFFSET(1,1)
Sub t()
    Dim rng As Range
    Set rng = Selection
???= rng.Address
  End Sub
作者: GBKEE    時間: 2014-8-24 10:19

回復 1# t8899
是這樣嗎?
  1. Option Explicit
  2. Sub EX()
  3.     Dim Rng As Range
  4.     With [a1:b21]
  5.         Set Rng = .Offset(.Rows.Count - 1, .Columns.Count - 1)
  6.         MsgBox Rng.Address
  7.     End With
  8. End Sub
複製代碼

作者: t8899    時間: 2014-8-24 10:35

回復  t8899
是這樣嗎?
GBKEE 發表於 2014-8-24 10:19


正確,謝謝!
作者: t8899    時間: 2014-8-24 18:45     標題: 請教複製到不同的工作表無法起作用 ?如何修改?

Sub test() '請用mouse先選擇複製的範圍
    Dim rng As Range, a, z, r, rr
    Set rng = Selection
z = InputBox("輸入開始位址")
Set r = Range(z).Offset(rng.Rows.Count - 1, rng.Columns.Count - 1)
Set rr = Range(z)
ActiveSheet.Range(rr.Address, r.Address) = Selection.Formula
End Sub
作者: GBKEE    時間: 2014-8-25 05:53

本帖最後由 GBKEE 於 2014-8-25 06:00 編輯

回復 4# t8899

Sub test() '請用mouse先選擇複製的範圍
    Dim rng As Range, a, z, r, rr
    Set rng = Selection   '這必是ActiveSheet的Selection
z = InputBox("輸入開始位址")
Set r = Range(z).Offset(rng.Rows.Count - 1, rng.Columns.Count - 1)
Set rr = Range(z)
'ActiveSheet.Range(rr.Address, r.Address) = Selection.Formula   '所以這不是複製到不同的工作表的
Sheets("TEST").Range(rr.Address, r.Address) = Selection.Formula   '是這樣嗎?
End Sub
作者: t8899    時間: 2014-8-25 05:59

回復  t8899

Sub test() '請用mouse先選擇複製的範圍
    Dim rng As Range, a, z, r, rr
    Set rn ...
GBKEE 發表於 2014-8-25 05:53

  Set rng = Selection   '這必是ActiveSheet的Selection
這一句可以更改嗎? 如果無解,再增加一個inbox 輸入選擇的工作表可以嗎??
作者: GBKEE    時間: 2014-8-25 06:23

回復 6# t8899
有Application,     InputBox 為方法,
沒有Application,  InputBox 為函數,
  1. Option Explicit
  2. Sub Ex()
  3.     Dim rng As Range, z As Range
  4.     Set rng = Selection
  5.     Set z = Application.InputBox("輸入開始位址", Type:=8) '可在各工作表中移動,選擇儲存挌
  6.     Set z = z.Offset(rng.Rows.Count - 1, rng.Columns.Count - 1)
  7.     z.Formula = rng.Formula   '是這樣嗎?
  8. End Sub
複製代碼

作者: t8899    時間: 2014-8-25 06:33

本帖最後由 t8899 於 2014-8-25 06:43 編輯
回復  t8899
有Application,     InputBox 為方法,
沒有Application,  InputBox 為函數,
GBKEE 發表於 2014-8-25 06:23


可以, 但只能覆製一個儲存格
作者: t8899    時間: 2014-8-25 09:32

回復  t8899
有Application,     InputBox 為方法,
沒有Application,  InputBox 為函數,
GBKEE 發表於 2014-8-25 06:23


檔案中 [attach]19017[/attach]
目標不對
1.選擇sheet1 c1-c3 目標 sheet2 h1 結果 sheet1 c1貼到 sheet2 h3 其餘空白
正確目標應為 sheet2 h1-h3 Offset(rng.Rows.Count - 1, rng.Columns.Count - 1)失效 ?
2.選擇sheet1 c1-c3 目標 sheet2 h1-h3 結果  sheet1 c1貼到 sheet2 h3-h5
正確目標應為 sheet2 h1-h3
作者: GBKEE    時間: 2014-8-25 09:56

回復 9# t8899
是這樣嗎?
  1. Option Explicit
  2. Sub Ex()
  3.     Dim rng As Range, z As Range
  4.     Set rng = Selection
  5.     Set z = Application.InputBox("輸入開始位址", Type:=8) '可在各工作表中移動,選擇儲存挌
  6.     If z Is Nothing Then Exit Sub
  7.     If rng.Rows.Count <> z.Cells.Rows.Count Or rng.Columns.Count <> z.Cells.Columns.Count Then
  8.        '目標與來源的欗數,列數有不一樣.
  9.        z.Cells(1).Resize(rng.Rows.Count, rng.Columns.Count).Formula = rng.Formula
  10.     Else  '反之目標與來源的欗數,列數相同
  11.         z.Formula = rng.Formula
  12.     End If
  13. End Sub
複製代碼

作者: t8899    時間: 2014-8-25 10:11

回復  t8899
是這樣嗎?
GBKEE 發表於 2014-8-25 09:56

完全正確,感謝您熱心指導!
作者: t8899    時間: 2014-8-25 21:11

本帖最後由 t8899 於 2014-8-25 21:12 編輯
回復  t8899
是這樣嗎?
GBKEE 發表於 2014-8-25 09:56


再請教一下,程序跑完有無辦法停留在目標工作表(activate)??
作者: GBKEE    時間: 2014-8-26 04:43

回復 12# t8899
  1. z.Parent.Activate
複製代碼





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