返回列表 上一主題 發帖

[發問] 資料的複製、貼上,語法問題

本帖最後由 n7822123 於 2019-6-20 01:26 編輯

回復 1# iceandy6150

可是在這一行跟我說出錯  Sheets("結果區").Range("A1").Select
為什麼呢?

a = .UsedRange.Rows.com
應該是
a = .UsedRange.Rows.count


二、不同檔案之間的複製、貼上

你的題目實在太廣了.......寫法千百種
只能說新手只能多看別人怎麼寫的
最後才能找到自己習慣的寫法


原程式:
Windows("資料.xlsx").Activate
.Range("A1:B3").copy

Windows("檔案.xlsx").Activate
.Range("A1").select
Selection.PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
, SkipBlanks:=False, Transpose:=False

(1)可以設物件來簡短長度 如下:

Set 資料表=workbooks("資料.xlsx").sheets("工作表1")
Set 檔案表=workbooks("檔案.xlsx").sheets("工作表1")
資料表.[A1:B3].copy
檔案表.[A1].PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
, SkipBlanks:=False, Transpose:=False



(2)如果啟用的工作表在"資料.xlsx"的"工作表1",
     基本上以後用這個工作表,前面的"地址"就可以省略了
     用Activate+With...End With 來簡短長度 如下


workbooks("資料.xlsx").sheets("工作表1").Activate

with workbooks("檔案.xlsx").sheets("工作表1")
    [A1:B3].copy  
    .[A1].PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
    , SkipBlanks:=False, Transpose:=False  
end with



[A1:B3].copy  這裡是copy "資料.xlsx"的"工作表1"的[A1:B3],因為是啟用的工作表,前面直接省略!
注意[A1]前面多了.,所以是在"檔案.xlsx"的"工作表1"的[A1]貼上
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

本帖最後由 n7822123 於 2019-6-20 03:02 編輯

回復 3# iceandy6150


非啟用的工作表做選取,會發生錯誤

所以盡量不要用 Select,下面程式同理,試試看

Sheets("工作表1").Activate
Sheets("結果區").Range("A1").Select


選取之前,要先改啟用的工作表
改成下面這樣就可以了

Sheets("工作表1").Activate
Sheets("結果區").Activate
Sheets("結果區").Range("A1").Select
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

本帖最後由 n7822123 於 2019-6-20 03:14 編輯

回復 4# n7822123

亦或者用Application.Goto取代Select

Sheets("工作表1").Activate
Application.Goto Sheets("結果區").Range("A1")
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

本帖最後由 n7822123 於 2019-6-20 13:07 編輯

回復 6# iceandy6150

所以不要用select,可參考我2樓的第2個寫法
固定一個工作表activate,其他的用with……end with
for回圈在with之內 你要處理1000個也沒問題
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

本帖最後由 n7822123 於 2019-6-21 14:11 編輯

回復 9# iceandy6150


UsedRange是計算某個工作表的使用範圍~~~所以前面最好指定是哪個Sheet
你的按鈕在工作表1,所以工作表1一開始就是Activate了~~~~
盡量不要一直切換工作表.........把自己弄混亂了~~~我光看你的說明...我自己也混亂了XD
依照你的寫法,我認為你還是直接指定哪個工作表比較安全^.^
你在ppt工作表的操作比較多,按鈕卻設在工作表1的確容易出問題

如果是我,就這樣寫摟~~~

With Sheets("PPT")
  If .[A1].Value <> "" Then .[A1:Z200].Delete Shift:=xlShiftUp    '清除所有資料
  [A1].CurrentRegion.Copy
  .[A1].PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone _
  , SkipBlanks:=False, Transpose:=False
  Application.CutCopyMode = False
  A = .UsedRange.Rows.Count
  For i = 2 To A
    .Range("U" & i).Value = .Range("G" & i).Value + 1
  Next i
End With
程式是依需求寫的,需求表達不清楚
或者沒有上傳附件,愛莫能助

TOP

        靜思自在 : 發脾氣是短暫的發瘋。
返回列表 上一主題