添加工作表时更新sheets.count值
我写一个macros来复制工作表并将其添加到工作簿中的特定位置。 此macros将用于具有不同数量的工作表的工作簿,所以我希望它可以继续复制并添加工作表,直到没有剩余工作表为止。
Sub Macro() Dim x As Integer For x = 3 To Sheets.Count Step 3 Sheets(x).Select Sheets(x).Copy Before:=Sheets(x + 3) A bunch more code... Next
macros显然从3运行到工作表总数,但由于工作表总数在每一步之后发生变化(由于复制/添加工作表),所以macros在工作簿结束之前停止(我猜测是因为当计数器达到sheets.count的起始值时它停止运行)。 有关如何使macros观继续到底的任何build议? 这是我第一次写代码的经验,所以请温柔:)
假设您想要添加x
表,以便达到工作表数量y
。 但是,您希望在工作簿中最后一个名为End
的工作簿之前创build所有这些工作表。 一种方法如下:
Sub AddMoreSheets() ShCount = ThisWorkbook.Sheets.Count TargetCount = 7 SheetsToAdd = TargetCount - ShCount Do Until SheetsToAdd = 0 ThisWorkbook.Sheets.Add Before:=ThisWorkbook.Sheets("End") SheetsToAdd = SheetsToAdd - 1 Loop End Sub
但是,如果你不能确定最后一张纸的名字是否End
? 一种方法如下:
Sub AddMoreSheets2() ShCount = ThisWorkbook.Sheets.Count TargetCount = 7 SheetsToAdd = TargetCount - ShCount Do Until SheetsToAdd = 0 ThisWorkbook.Sheets.Add Before:=ThisWorkbook.Sheets(Sheets.Count) SheetsToAdd = SheetsToAdd - 1 Loop End Sub
但是,由于某种原因,你真的想为此使用For Loop
。 这里有一个问题:你想根据一个名为Start
的表格来命名它们。 以下是一种方法:
Sub AddMoreSheets3() Dim ListOfNames As Variant, ShName As Variant ListOfNames = Sheets("Start").Range("A1:A5").Value 'Modify accordingly. For Each ShName In ListOfNames Set NewSht = ThisWorkbook.Sheets.Add(Before:=Sheets(Sheets.Count)) NewSht.Name = ShName Next ShName End Sub
希望这可以帮助。 ;)