3

私はこれを解決しようとしてきましたが、できませんでした。私は次のVBAコードを持っています。実行中は「実行時エラー6:オーバーフロー」が発生します。私は各変数に正しいタイプを割り当てたと思います。助けてください!!

Sub UseCoeff()
Dim a, b As Long
Dim Value1 As Double

ThisWorkbook.Sheets("UseTableBEA").Activate
For b = 2 To 427
    For a = 2 To 431

        Value1 = ThisWorkbook.Sheets("UseTableBEA").Cells(a, b).Value / ThisWorkbook.Sheets("UseTableBEA").Cells(432, b).Value
        ThisWorkbook.Sheets("UseCoeff").Cells(a, b).Value = Value1

    Next a
Next b
End Sub

各セルの結果は、0から1、小数点以下8桁までの範囲になります。前もって感謝します!!

4

2 に答える 2

3

ThisWorkbook.Sheets("UseTableBEA").Cells(432, b).Valueが0の場合、も0ThisWorkbook.Sheets("UseTableBEA").Cells(a, b).Value / ThisWorkbook.Sheets("UseTableBEA").Cells(432, b).Valueの場合、オーバーフローエラーが発生します。ThisWorkbook.Sheets("UseTableBEA").Cells(a, b).Value

これを回避するには、ifステートメントを使用して0を除外し、必要な実際のロジックでコメントを更新します。

If ThisWorkbook.Sheets("UseTableBEA").Cells(432, b).Value = 0 Then
    Value1 = 'Whatever you want but probably 0.
Else
    Value1 = ThisWorkbook.Sheets("UseTableBEA").Cells(a, b).Value / ThisWorkbook.Sheets("UseTableBEA").Cells(432, b).Value
End If
于 2012-09-18T04:18:43.930 に答える
2

Dim a, b As Long

a は、バリアントとして宣言されている限り a として宣言されていません。これを試してください。

Dim a as long, b as Long

編集: これをテストしても、スタック オーバーフロー エラーが発生します。ただし、変数を適切に宣言することをお勧めします。

次の行も必要ありません。

ThisWorkbook.Sheets("Sheet1").Activate

宣言するとUseTableBEA、コードをスリム化できます。

Dim Ws1 as Worksheet
Set Ws1 = Sheets("UseTableBEA")

Ws1その後、以前に使用していた場所を使用できますThisWorkbook.Sheets("UseTableBEA")

于 2012-09-18T12:47:48.523 に答える