我正在尝试遍历一行中的某些列,并使用我所在的当前列/行的值的名称创建新的工作表。
Sub test()
Range("R5").Select
Do Until IsEmpty(ActiveCell)
Sheets.Add.Name = ActiveCell.Value
ActiveCell.Offset(0, 1).Select
Loop
End Sub
此代码从 开始正确创建第一个R5 但随后似乎宏切换到该工作表并且没有完成任务。
最佳答案
Sheets.Add 会自动将您的选择移动到新创建的工作表(就像您手动插入新工作表一样)。因此,偏移量基于现在已成为您选择的新工作表的单元格 A1 - 您选择一个空单元格(因为工作表是空的)并且循环终止。
Sub test()
Dim MyNames As Range, MyNewSheet As Range
Set MyNames = Range("R5").CurrentRegion ' load contigeous range into variable
For Each MyNewSheet In MyNames.Cells ' loop through cell children of range variable
Sheets.Add.Name = MyNewSheet.Value
Next MyNewSheet
MyNames.Worksheet.Select ' move selection to original sheet
End Sub
这会更好....您将名称列表分配给 Range 类型的对象变量,并在 For Each 循环中解决此问题。完成后,您将您的选择放回您来自的地方。
关于vba - 用于创建新工作表的 Excel 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12080006/