0

次のVBScriptコードは、行でエラーが発生します。」

    .Range(.Cells(lRow, lCol), .Cells(lRow, lCol + 3)).Delete Shift:=xlToLeft

正しい

    .Range(.Cells(lRow, lCol), .Cells(lRow, lCol + 3)).Delete(-4159)

エラーは次のとおりです:「ステートメントの予期される終了」。

コード

  Sub DataShiftFromRightToLeft(Ob6)

   Dim lCol,COL_FIRST,startCol
   Dim NUM_TASKS:NUM_TASKS=36

COL_FIRST = objExcel1.Application.WorksheetFunction.Match("Parent Business Process ID", ob6.Rows(1), 0)
COL_FIRST=COL_FIRST+1

'Set wst = Ob6.ActiveSheet

With ob6.ActiveSheet

    For lRow = 2 To .UsedRange.Rows.Count
        lTask = 1
        Do While lTask <= NUM_TASKS
            lCol = COL_FIRST + (lTask - 1) * 4
            If Len(.Cells(lRow, lCol).Value) = 0 And _
               Len(.Cells(lRow, lCol + 1).Value) = 0 And _
               Len(.Cells(lRow, lCol + 2).Value) = 0 And _
               Len(.Cells(lRow, lCol + 3).Value) = 0 Then
                ' make sure there is something to the right to shift over
                If .Cells(lRow, lCol).End(xlToRight).Column < .Columns.Count Then
                    ' delete the empty cells and shift everything left``
                    .Range(.Cells(lRow, lCol), .Cells(lRow, lCol + 3)).Delete Shift:=xlToLeft
                Else
                    ' force the loop to the next row
                    lTask = NUM_TASKS + 1
                End If
            Else
                lTask = lTask + 1
            End If
        Loop
    Next lRow
End With

End Sub
4

1 に答える 1

1

Shift:=xlToLeft名前付きパラメータを使用しようとしています。これはVBScriptでは不可能です。xlToLeft(Const)を定義xlToLeftし、正しい位置を通過することを確認する必要があります(VBAドキュメントを使用して.Deleteへの引数の数と順序を確認してください)。

PS

「vbscriptdeletexltoleft」をグーグルで検索すると、最初のヒットが役に立ちます。

于 2012-12-16T07:09:49.330 に答える