首页 文章

需要有关使用范围中的单元格创建新工作表的Excel VBA循环代码的帮助

提问于
浏览
0

我的代码尝试为D列中的每个单元格值创建一个工作表,然后一次在每个工作表1中工作(即粘贴值并运行2个公式) . 它在selection.copy命令和activesheet.name命令中出错 .

我希望一次创建1个工作表,在该工作表中运行公式,然后重复,而不是一次添加所有工作表,然后使用列D中的单元格值重命名它们 .

我提前为长度道歉,我是VBA初学者,大部分代码来自使用记录功能 .

Sub Macro2()

Dim x As Integer
NumRows = Range("D1", Range("D1").End(xlDown)).Rows.Count
Range("D1").Select
For x = 1 To NumRows


Selection.Copy
Sheets.Add After:=ActiveSheet
ActiveSheet.Select
ActiveSheet.Name = Selection.Paste
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Sheets("Sheet1").Select
Range("H2:H5").Select
Application.CutCopyMode = False
Selection.Copy
Sheets(Selection.Paste).Select
Range("A2").Select
ActiveSheet.Paste
Range("A5").Select
Application.CutCopyMode = False
Range("B6").Select
ActiveCell.FormulaR1C1 = "=BDH(R[-5]C[-1],R[-2]C[-1],R[-4]C[-1],R[-3]C[-1],)"
Range("D6").Select
ActiveCell.FormulaR1C1 = "=BDH(R[-5]C[-3],R[-1]C[-3],R[-4]C[-3],R[-3]C[-3],)"
Range("D6").Select
Sheets(Selection.Paste).Select

Next

End Sub

Sheet1

提前致谢!

1 回答

  • 0

    无论您的公式中的“BDH”是什么,您都可以尝试这样做:

    Sub Macro2()
        Dim valuesRng As Range, hRng As Range, cell As Range
    
        With Sheet1
            Set valuesRng = .Range("D1", .Range("D1").End(xlDown))
            Set hRng = .Range("H2:H5")
        End with
    
        For Each cell in valuesRng
            With Sheets.Add(After:=Sheets(Sheets.Count))
                .Name = cell.Value
                .Range("A1").Value= cell.Value
                .Range("A2:A5").Value= hRng.Value
                .Range("B6").FormulaR1C1 = "=BDH(R[-5]C[-1],R[-2]C[-1],R[-4]C[-1],R[-3]C[-1],)"
                .Range("D6").FormulaR1C1 = "=BDH(R[-5]C[-3],R[-1]C[-3],R[-4]C[-3],R[-3]C[-3],)"
            End with
        Next
    End Sub
    

相关问题