在表格中排列列

时间:2018-03-26 03:41:33

标签: excel vba excel-vba

我正在尝试检查列标题是否位于正确的位置(我已将实际的列标题声明为常量值),并且它们是否未将它们移动到正确的位置。

我是VBA的新手,当我尝试使用基本的For循环和Select Case时,我意识到代码太长了。我在想是否还有另一种更简单的方法可以做到。

以下是我尝试过的代码示例:

Sheet4_Last_RowNum = WorkingSheet.Cells(Rows.Count, 1).End(xlUp).Row
Sheet4_Last_ColNum = WorkingSheet.Cells(Label_RowNum, Columns.Count).End(xlToLeft).Column
For icol = 1 To Sheet4_Last_ColNum
    Select Case WorkingSheet.Cells(Label_RowNum, icol).Value

    Case "WkVersion"
        Sheet4_WkCol = icol
        If Sheet4_WkCol <> Sheet4_ActualWk Then
            Sheet4_WkValue = WorkingSheet.Range(Cells(headerRow, Sheet4_WkCol), Cells(Sheet4_Last_RowNum, Sheet4_WkCol))
        End If
    Case "MPA"
        Sheet4_MPACol = icol
        If Sheet4_MPACol <> Sheet4_ActualMPA Then
            Sheet4_MPAValue = WorkingSheet.Range(Cells(headerRow, Sheet4_MPACol), Cells(Sheet4_Last_RowNum, Sheet4_MPACol))
        End If
    Case "Location"
        Sheet4_LocCol = icol
        If Sheet4_LocCol <> Sheet4_ActualLoc Then
            Sheet4_LocValue = WorkingSheet.Range(Cells(headerRow, Sheet4_LocCol), Cells(Sheet4_Last_RowNum, Sheet4_LocCol))
        End If
    End Select
Next icol

With WorkingSheet
    If IsEmpty(Sheet4_WkValue) = True Then
    Else
        .Range(Cells(headerRow, Sheet4_ActualWk), Cells(Sheet4_Last_RowNum, Sheet4_ActualWk)) = Sheet4_WkValue
    End If
    If IsEmpty(Sheet4_MPAValue) = True Then
    Else
        .Range(Cells(headerRow, Sheet4_ActualMPA), Cells(Sheet4_Last_RowNum, Sheet4_ActualMPA)) = Sheet4_MPAValue
    End If

    If IsEmpty(Sheet4_LocValue) = True Then
    Else
        .Range(Cells(headerRow, Sheet4_ActualLoc), Cells(Sheet4_Last_RowNum, Sheet4_ActualLoc)) = Sheet4_LocValue
    End If
End With

0 个答案:

没有答案