2013-07-17 42 views
2

我想讓複印機多次複印一張紙。所以我已經爲第一週做了一個星期的計劃。 現在我想讓這張表多出51次。所以名稱必須先從2,用52結束爲了使這項工作對於X到Y我做了下面的代碼:在「錯誤9:用於複印紙張的VBA excel代碼錯誤

Sub Copier() 
    Dim a As Integer 
    Dim b As Integer 

    a = InputBox("Enter begin number for making copy's") 
    b = InputBox("Enter end number for making copy's") 

    For x = a To b 
     'Loop to make x number copies. 
     ActiveWorkbook.ActiveSheet.Copy _ 
     Before:=ActiveWorkbook.Sheets("x") 
     'The name of every copied sheet is a number. 
    Next 
End Sub 

當我執行此,它給出了一個錯誤下標超出範圍「。 (我翻譯它,因爲我有荷蘭的Excel。)

我不明白什麼是錯的,因爲這段代碼是從微軟頁面複製的。 有沒有人有想法?

回答

1

在你的代碼中你使用了一個字符串「x」。如果你想用x作爲索引,你需要使用它而不用引號。

編輯

使用X作爲一個片索引:

ActiveWorkbook.ActiveSheet.Copy Before:=ActiveWorkbook.Sheets(x) 

使用的片材的名稱,以獲得其索引:

ActiveWorkbook.ActiveSheet.Copy Before:=ActiveWorkbook.Sheets(Sheets("Sheet1").Index) 

使用紙張作爲數量索引:

ActiveWorkbook.ActiveSheet.Copy Before:=ActiveWorkbook.Sheets(Sheets.Count) 

如果您在複製後嘗試更改工作表的名稱,則需要添加這樣的代碼。

實施例:

ActiveWorkbook.ActiveSheet.Copy Before:=ActiveWorkbook.Sheets(Sheets.Count) 
ActiveSheet.Name = x 
+0

Ripster這不起作用。由於表格(x)是指像Andy G所說的表格索引。這些索引必須是我想複製的heet的索引。我以爲更多的前:= ActiveWorkbook.Sheets(1) ActiveSheet.Name =「x」但thsi不起作用 – Glenn

+0

你試圖完成什麼還不清楚。 Andy G和我說了完全一樣的東西..我會更新我的代碼以嘗試解釋我認爲你在問什麼,但是再次,這對我來說還不太清楚。 – Ripster

+0

謝謝Ripster和Andy G.它工作:) – Glenn

2
Before:=ActiveWorkbook.Sheets("x") 

這是尋找一個命名爲 「X」 片材。您可能打算使用Sheets(x),它通過索引號引用工作表。但是,這不會命名工作表 - 您還沒有此代碼。

+0

謝謝我不明白他們的意思是他們想複製的工作表的名稱。你知道我怎樣才能得到表格的索引作爲它的輸入名稱? – Glenn

0

我要完成的任務是這樣的:

Sub Copier() 
    Dim a As Integer 
    Dim b As Integer 
    Dim c As String 

    c = InputBox("Name of Sheet") 
    a = InputBox("Enter begin number for making copy's") 
    b = InputBox("Enter end number for making copy's") 


    For x = a To b 
     'Loop to make x number copies. 
     ActiveWorkbook.ActiveSheet.Copy _ 
     Before:=ActiveWorkbook.Sheets(c) 


    Next 
End Sub 

我現在還是唯一希望的是,複製的工作表的名稱變的X。

0

這個宏將複製表「1」張「2」到任何....

Option Explicit 

Sub MakeExtraWeeks() 
Dim q As Long 
Dim i As Long 

q = InputBox("How Many extra weeks?") 

For i = 2 To q 
    Worksheets("1").Copy After:=Worksheets(Worksheets.Count) 
    Worksheets(Worksheets.Count).Name = CStr(i) 
Next i 
End Sub 

我複製After:=最後一個薄片,所以我確切地知道在哪裏可以找到表,這樣我就可以於下一行重命名(記住,片材的計數將增加了1,所以.Name將重命名的最終片材)

2

替換Before:=ActiveWorkbook.Sheets("x")Before:=ActiveWorkbook.Sheets(CStr(x))

Sheets("x")看對子級˚F或片狀正是命名爲「X」

Sheets(x),如果x不是字符串類型,看對子級爲具有索引x的

Sheets(CStr(x))表,確保你想找的表名爲x。

相關問題