Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA循环和设置变量_Vba_Loops_Variables - Fatal编程技术网

VBA循环和设置变量

VBA循环和设置变量,vba,loops,variables,Vba,Loops,Variables,我目前正在使用一个循环,其中包含一个变量,该变量根据列表进行更改。循环将创建新的工作表,并根据变量“c”的当前值命名它们 我想引入另一个变量“b”,让它表示与“c”相同的行,但不同的列。我还想用“b”将其值写入新工作表上的特定单元格。我 我不知道如何引入第二个变量,并让它在已经运行的循环中循环它自己的列表 以下是当前代码: Sub CopyIndTemplate() Dim sh1 As Worksheet, sh2 As Worksheet, c As Range Set sh1 = Shee

我目前正在使用一个循环,其中包含一个变量,该变量根据列表进行更改。循环将创建新的工作表,并根据变量“c”的当前值命名它们

我想引入另一个变量“b”,让它表示与“c”相同的行,但不同的列。我还想用“b”将其值写入新工作表上的特定单元格。我

我不知道如何引入第二个变量,并让它在已经运行的循环中循环它自己的列表

以下是当前代码:

Sub CopyIndTemplate()
Dim sh1 As Worksheet, sh2 As Worksheet, c As Range
Set sh1 = Sheets("Individual Template")
Set sh2 = Sheets("List")
    
    
    For Each c In sh2.Range("b1", sh2.Cells(Rows.Count, 2).End(xlUp))
        sh1.Copy After:=Sheets(Sheets.Count)
        ActiveSheet.Name = c.Value: ActiveSheet.Range("A1") = c.Value: ActiveSheet.Range("b9") = b.Value
            
    Next   
End Sub

c
表示B列中的当前单元格

如果要获取同一行但在列C中的单元格,可以执行
C.Offset(ColumnCoffset:=1)
,要获取同一行但在列A中的单元格,可以执行
C.Offset(ColumnCoffset:=1)


Range.Offset
在循环中[mis]与
ActiveCell
一起使用时,通常会导致非常混乱和难以理解的代码,但当您希望您的代码传达您的意思是要获得一个与当前查看的单元格偏移的单元格时,使用它会生成传达意图的代码,这是你想让你的代码做的唯一一件事:做它所说的,并说它做了什么。< /P>使用<代码> B.<代码> CytoErrrou.Cype(5)或<代码> C.ItReReOver。列(“H”)< /代码>作为示例说明,考虑忘记<代码>:< /Cord>令牌存在,并且每行代码有一条单独的指令。使调试更容易,不能在断线中间放置断点来检查中间状态。也可以考虑使用变量的实际描述性名称,例如“代码> TEMPLATESHETE <代码>,而不是<代码> SH1 ,<代码> Listabs<代码>,而不是<代码> SH2,<代码> CurrnCys<代码>,而不是<代码> C<代码> > <代码>源代码> <代码>,而不是<代码> B<代码> > >(并声明它,确保模块在顶部显示
Option Explicit
)。根据经验,避免使用单字母名称。让它代表与“c”相同的行,但代表不同的列-酷,哪个列?谢谢@TimWilliams,你的建议非常有效!