3

オフィスの 1 つのユーザー コンピューターでこのコードを実行すると問題が発生します。他のすべてのユーザー コンピューターでは問題なく実行されます (Windows XP オペレーティング システム、Excel 2010 Standard または Professional)。このコンピューターは Windows XP で、Excel 2010 Professional を実行しています。実行時エラー 16 がマークされた行に表示されます --> 問題は変数 i にあるようです - ハイライト ヒントは i = -1.#IND を示します

Sub FormatSheet(strResultSheet As String)
    Dim oCol As Excel.Range
    Dim i As Double
    Dim R As String
    Dim iColumn As Integer

    ' Special rountine to convert text column into numeric
    Sheets(strResultSheet).Select
    iColumn = 0
--> For i = 1 To Worksheets(strResultSheet).Cells.SpecialCells(xlLastCell).Column
        If UCase(Cells(1, i).Text) = "QUANTITY" Then
            iColumn = i
            Exit For
        End If
    Next
    Sheets(strResultSheet).Select
    If iColumn > 0 Then
        Columns(iColumn).Select
        Selection.NumberFormat = "#,##0.00"
        Selection.HorizontalAlignment = xlHAlignRight
        For i = 2 To Sheets(strResultSheet).Cells.SpecialCells(xlLastCell).Row
            If Cells(i, iColumn).Text <> "" Then
                Cells(i, iColumn).Value = Cells(i, iColumn).Value * 1
            End If
        Next
    End If

End Sub

ユーザーマシンを修正して処理するために何をする必要があるか知っている人はいますか? マクロはサードパーティの毎日の電子メールに埋め込まれているため、コードを調整して修正することはできません。

4

1 に答える 1

0

以下のコードを試してください:

Sub FormatSheet(strResultSheet As String)

    Dim rng As Range, lastRow As Integer

    With Sheets(strResultSheet)
        .Select
        Set rng = .Rows("1:1").Find("QUANTITY")

        If Not rng Is Nothing Then
            rng.EntireColumn.NumberFormat = "#,##0.00"
            rng.HorizontalAlignment = xlHAlignRight

            lastRow = Cells(65000, rng.Column).End(xlUp).Row
            For i = 2 To lastRow
                Cells(i, rng.Column).Value = Cells(i, rng.Column).Value * 1
            Next
        End If
    End With

End Sub
于 2013-03-12T17:27:49.620 に答える