需要有关 Excel VBA 使用范围内的单元格创建新工作表的循环代码的帮助
Need help on Excel VBA loop code that creates new worksheets using cells in range
我下面的代码尝试为 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
提前致谢!
无论你公式中的“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
我下面的代码尝试为 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
提前致谢!
无论你公式中的“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