Excel 使用for循环移动列

Excel 使用for循环移动列,excel,vba,loops,Excel,Vba,Loops,我有一个包含多行的主电子表格,我想将每一列从第四页移动到最后一页的不同电子表格 当我试图运行这个程序时,我遇到了一个编译错误。“主”选项卡有数量可变的列,称为“时间”、“房间1”、“房间2”、“房间3”…,因此我为每个房间创建了一个单独的选项卡。现在我想循环浏览主工作表上的每一列,并将每个相关列移动到其各自的选项卡上。有没有更好的方法来代替for循环中的for循环 Sub MoveData2() Dim S As Integer Dim LastCol As Long Dim F As Lon

我有一个包含多行的主电子表格,我想将每一列从第四页移动到最后一页的不同电子表格

当我试图运行这个程序时,我遇到了一个编译错误。“主”选项卡有数量可变的列,称为“时间”、“房间1”、“房间2”、“房间3”…,因此我为每个房间创建了一个单独的选项卡。现在我想循环浏览主工作表上的每一列,并将每个相关列移动到其各自的选项卡上。有没有更好的方法来代替for循环中的for循环

Sub MoveData2()

Dim S As Integer
Dim LastCol As Long
Dim F As Long
Dim NameTest As String, NameStr As String
Dim LastRow As Long

Sheets("Master").Activate
Range("B4", "B" & Cells(Rows.Count, 1).End(xlUp).Row).Copy
Sheets("Room1").Activate
Range("B5").Select
ActiveSheet.Paste

Sheets("Master").Activate

LastCol = Sheets("Master").Cells(4, Columns.Count).End(xlToLeft).Column

For F = 3 To LastCol
    LastRow = Sheets("Master").Cells(Rows.Count, F).End(xlUp).Row
    Sheets("Master").Range(Cells(4, F), Cells(LastRow, F)).Copy

    'This next part checks to see if worksheet exists and creates if it doesn't exist
    NameStr = "Room" & F
    NameTest = Worksheets(NameStr).Name
    If Err.Number = 0 Then
    Else
        Err.Clear
        Worksheets.Add.Name = NameStr
    End If
    'End of check if it exists and creates it code

    Sheets("Room" & F - 1).Range("B4").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

Next F

End Sub

什么不起作用?现在,您的工作表是什么样子的代码运行完毕后,工作表应该是什么样子的?我们这里不是读心术的人,你需要分享所有可能的详细信息,评论错误简历,然后告诉我们是否出现了错误,以及确切的消息/问题。你实际上没有问任何问题。对不起,我编辑了帖子。我得到了一个无效或不合格的引用。它突出了哪一行?我在网页中编写了代码,因此可能出现了一个小的语法错误。是的,我在Columns.count前面有一个句点,并修复了另一个错误。这应该行得通。已测试和编辑。如果您希望目标工作表的命名结构不同,可以更改周围的一些单词。
Sub MoveData2()

Dim S As Integer
Dim LastCol As LongSub MoveData2()

Dim S As Integer
Dim LastCol As Long
Dim F As Long
Dim NameTest As String, NameStr As String
Dim LastRow As Long

On Error Resume Next

LastCol = Sheets("Master").Cells(1, Columns.Count).End(xlToLeft).Column

For F = 4 To LastCol
    LastRow = Sheets("Master").Cells(Rows.Count, F).End(xlUp).Row
    Sheets("Master").Range(Cells(1, F), Cells(LastRow, F)).Copy

    'This next part checks to see if worksheet exists and creates if it doesn't exist
    NameStr = "Sheet" & F
    NameTest = Worksheets(NameStr).Name
    If Err.Number = 0 Then
    Else
        Err.Clear
        Worksheets.Add.Name = NameStr
    End If
    'End of check if it exists and creates it code

    Sheets("Sheet" & F).Range("B4").PasteSpecial
Next F

End Sub