Board logo

標題: worksheets copy 問題 [打印本頁]

作者: enoch    時間: 2012-3-29 17:32     標題: worksheets copy 問題

在檔案內有一個工作表"SAMPLE"
希望設定程式
可以輸複製工作表數量
而複製完後的工作表名稱從左至右由1開始
但經常到中途會出現執行階段錯誤
請問那裡出問題呢?
或有沒有其他更好的方法嗎?

Sub 複製工作表()
Dim i As Integer
Dim no As Integer
Dim e As Integer

i = Application.InputBox("請輸入數字" & Chr(10) & "或按 '取消' 停止巨集", _
           "複製工作表張數", Type:=1)
If i > 0 Then
e = i
For no = 1 To i
Worksheets("sample").Copy before:=Worksheets(1)
    Sheets(1).Name = e
e = e - 1
Next no
End If
End Sub
作者: GBKEE    時間: 2012-3-29 18:05

回復 1# enoch
沒有錯誤: 請傳上有錯誤的檔案
作者: alexliou    時間: 2012-3-29 18:14

本帖最後由 alexliou 於 2012-3-29 18:20 編輯

Worksheet 的 Name 屬性應為字串(String)值
只要把  Sheets(1).Name = e 改為  Sheets(1).Name = Str(e) 即可

但我也試了你原來的程式
似乎用數字也OK
作者: hugh0620    時間: 2012-3-29 18:31

本帖最後由 hugh0620 於 2012-3-29 18:35 編輯

回復 1# enoch


    個人猜測~
     是因為有重覆名稱的sheet存在~ 導致只執行到一半就斷掉~
     應用以前G大大教的方式,砍掉不等於Sample的sheet就不會有問題
     但還是要看你的需求是什麼,才能夠對症下藥
  1. Sub 複製工作表()
  2.     Dim i As Integer
  3.     Dim no As Integer
  4.     Dim e As Integer
  5.    
  6.     i = Application.InputBox("請輸入數字" & Chr(10) & "或按 '取消' 停止巨集", _
  7.                "複製工作表張數", Type:=1)
  8.     If i > 0 Then
  9.     e = i
  10.     '=====將不等於sample刪除,再重新新增====
  11.         Application.DisplayAlerts = False
  12.         For Each A In Sheets
  13.             If A.Name <> "sample" Then
  14.                A.Delete
  15.             End If
  16.         Next
  17.         Application.DisplayAlerts = True
  18.      '=======================================
  19.         For no = 1 To i
  20.             Worksheets("sample").Copy before:=Worksheets(1)
  21.                 Sheets(1).Name = e
  22.             e = e - 1
  23.         Next no
  24.     End If
  25. End Sub
複製代碼

作者: enoch    時間: 2012-3-30 10:34

本帖最後由 enoch 於 2012-3-30 10:45 編輯

上傳有關檔案, 當中的複製工作表程式
請指教

另多謝hugh0620 的提點
現時複製工作表之前, 需要用人手刪除原先工作表, 再新增
現在可自動清除了, 但當中 a In Sheets 的 a, 應該dim as ?
作者: hugh0620    時間: 2012-3-30 12:18

本帖最後由 hugh0620 於 2012-3-30 12:29 編輯

回復 5# enoch


http://forum.twbts.com/viewthread.php?tid=2855&highlight=
作者: Hsieh    時間: 2012-3-30 12:33

回復 5# enoch


    dim A as worksheet
for each A in Sheets
就是以所有工作表作迴圈,A變數代表一個工作表




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