Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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/8/perl/10.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 excel宏,该宏自动创建一个新的工作表,该工作表从以前的工作表1继续执行“for循环”_Vba - Fatal编程技术网

Vba excel宏,该宏自动创建一个新的工作表,该工作表从以前的工作表1继续执行“for循环”

Vba excel宏,该宏自动创建一个新的工作表,该工作表从以前的工作表1继续执行“for循环”,vba,Vba,我已经编写了一个vba代码,它有一个for next循环1到10,并在列a中的相应行中显示结果,我希望当它到达第5行时,宏应该自动创建一个名为new sheet的新工作表,for next从6继续到10。我是VBA新手,我编写的代码似乎不起作用 我的VBA代码: Sub test() Dim a As Long Dim WS As Worksheet Set WS = Worksheets.Add(After:=Worksheets(1)) WS.Name = "New Sheet" n

我已经编写了一个vba代码,它有一个for next循环1到10,并在列a中的相应行中显示结果,我希望当它到达第5行时,宏应该自动创建一个名为new sheet的新工作表,for next从6继续到10。我是VBA新手,我编写的代码似乎不起作用

我的VBA代码:

Sub test()

Dim a As Long
Dim WS As Worksheet

Set WS = Worksheets.Add(After:=Worksheets(1))
WS.Name = "New Sheet"

n = 1
col1 = 1

For a = 1 To 10

    If n <= 5 Then

        Cells(n, col1).Value = a
        n = n + 1

    End If

    If n > 5 Then

        WS.Cells(n, 1).Value = a
        n = n + 1

    End If

Next a


  End Sub

如果您遵循,您的代码可以进一步改进。 关于您的问题,您可以尝试以下方式:

Sub Test()
    Dim newWS As Worksheet
    Dim a As Long
    Dim n As Long: n = 1

    With Thisworkbook.Sheets("SheetName")
        For a = 1 To 10
            If n > 5 Then
                On Error Resume Next
                Set newWS = Thisworkbook.Sheets("New Sheet")
                On Error Goto 0
                If newWS Is Nothing Then
                    Set newWS = Thisworkbook.Sheets.Add(After:= _
                        Thisworkbook.Sheets(Thisworkbook.Sheets.Count))
                    newWS.Name = "New Sheet"
                End If
                newWS.Cells(n, 1).Value = a
            Else
                .Cells(n, 1).Value = a
            End If
            n = n + 1
        Next
    End With
End Sub

谢谢L42,您的帮助增加了我对VBA的理解