Excel 使用宏或VBA创建命名区域,其中名称位于每30行的工作表中
我有一个宏,每30行创建一个单元格序列,将“源”和“目标”后面的数字每30个单元格增加一个 我想在该宏(如下所列)中添加以下功能:将数字为3,4,5,6的范围命名为“Source033”(不带引号),并将右侧的5x3数组命名为“Target033”(不带引号) 再次运行宏时,将显示相同的结构,但与单词“source”和“target”关联的数字将再次递增1。这是一个宏,它只需每隔30行重新创建一个结构,但将范围的命名留给用户——对于数百次迭代来说,这仍然是一项相当繁琐的任务:Excel 使用宏或VBA创建命名区域,其中名称位于每30行的工作表中,excel,vba,Excel,Vba,我有一个宏,每30行创建一个单元格序列,将“源”和“目标”后面的数字每30个单元格增加一个 我想在该宏(如下所列)中添加以下功能:将数字为3,4,5,6的范围命名为“Source033”(不带引号),并将右侧的5x3数组命名为“Target033”(不带引号) 再次运行宏时,将显示相同的结构,但与单词“source”和“target”关联的数字将再次递增1。这是一个宏,它只需每隔30行重新创建一个结构,但将范围的命名留给用户——对于数百次迭代来说,这仍然是一项相当繁琐的任务: source033
source033 target033
3 4 5 6
1.0 3.4 5.3
2.0 4.4 8.1
3.0 5.4 11.0
4.0 6.4 13.8
5.0 7.4 16.7
谢谢 作为一般经验法则,您应该避免使用
。尽可能选择和选择。因此,您可以清理现有代码,使其看起来像这样
Sub build_selling_proceeds_sort()
'
build_selling_proceeds_sort Macro
'
Keyboard Shortcut: Option+Cmd+b
ActiveCell.Range("A1:AA24").Select
Selection.Copy
ActiveCell.Offset(30, 0).Range("A1").Select
ActiveSheet.Paste
ActiveCell.Offset(2, 2).Range("A1").Select
Application.CutCopyMode = False
Calculate
ActiveCell.Range("A1:J1").Select
End Sub
我不确定要命名为“Source033”和“Target033”的范围将位于何处。所以我会做一些普通的事情
'This range seems large for what you're trying to do, but it's what you had
ActiveCell.Range("A1:AA24").Copy ActiveCell.Offset(30)
Application.CutCopyMode = False
Calculate
Dim sourceRange as Range, targetRange as Range
Set sourceRange = Range("A2")
Set targetRange = Range("A4:C8")
'I assume you've defined some incrementer x as
'the number of times you've looped this statement
thisWorkbook.Names.Add "Source" + CStr(x), sourceRange
thisWorkbook.Names.Add "Target" + CStr(x), targetRange