vba - 用于创建新工作表的 Excel 宏

标签 vba excel

我正在尝试遍历一行中的某些列,并使用我所在的当前列/行的值的名称创建新的工作表。

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/

相关文章:

vba - 根据不同的单元格值创建字母数字列表

excel - 使用 VBA 将多列转置为多行

excel - 更有效的写法是什么?

excel - 创建一个复选框,复制它,然后将新的复选框报告到新位置

vba - Excel 中的 Normal.dotm 等效项,用于引用相同的单个 VBA 代码

excel vba需要控制来检查是否有空单元格

excel - 强制 Excel 2007 将列中的所有值视为文本

excel - 按单元格值保存 Excel 文件并保存在打开文件的当前目录中

c# - EPPlus,查找并设置命名范围的值

Excel-Vba : Code for Applying Formula until Last Row not working