Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


5341 / 13645 ツリー ←次へ | 前へ→

【51422】オーバーフローについて Midori 07/9/16(日) 19:37 質問[未読]
【51423】Re:オーバーフローについて SS 07/9/16(日) 20:05 回答[未読]
【51424】Re:オーバーフローについて かみちゃん 07/9/16(日) 20:36 発言[未読]
【51426】Re:オーバーフローについて Midori 07/9/16(日) 20:49 お礼[未読]
【51425】Re:オーバーフローについて Midori 07/9/16(日) 20:47 お礼[未読]

【51422】オーバーフローについて
質問  Midori  - 07/9/16(日) 19:37 -

引用なし
パスワード
   「実行時エラー6、オーバーフローしました。」のアラームが
7行目のコードで出ます。このアラームを除く方法を教えてください。

Private Sub Workbook_Open()
 Dim i As Integer
  Dim k As Integer
  Dim LstR As Integer
   LstR = Range("E65536").End(xlUp).Row
   For i = 6 To LstR
   k = Cells(i, 5).Value - Cells(6, 7).Value'←この行でエラー発生
    Select Case k
     Case Is < 1
      Cells(i, 5).Font.ColorIndex = 5
     Case Is < 30
      Cells(i, 5).Font.ColorIndex = 3
     Case Else
      Cells(i, 5).Font.ColorIndex = 1
    End Select
   Next
End Sub

表は次の通りです
D列           H列
6  2007/9/16     2007/9/16
7  2007/10/2
8  2007/9/15
9  2007/10/26
10  2007/10/15

【51423】Re:オーバーフローについて
回答  SS  - 07/9/16(日) 20:05 -

引用なし
パスワード
   ▼Midori さん:

こんばんは、先ずIntegerを調べると以下のような記述があります。
整数型 (Integer) の変数は、16 ビット (2 バイト) の変数で、-32,768 〜 32,767 の範囲の値をとります。整数型の型宣言文字はパーセント記号 (%) です。

これを踏まえて
Sub test()
  Dim i As Integer
  Dim k As Long '←ここを変更Integer
  Dim LstR As Integer
   LstR = Range("E65536").End(xlUp).Row
   MsgBox LstR
   For i = 6 To LstR
   k = Cells(i, 5).Value - Cells(6, 7).Value '←この行でエラー発生
   MsgBox k

   Next
End Sub
を試してみてください。

>「実行時エラー6、オーバーフローしました。」のアラームが
>7行目のコードで出ます。このアラームを除く方法を教えてください。
>
>Private Sub Workbook_Open()
> Dim i As Integer
>  Dim k As Integer
>  Dim LstR As Integer
>   LstR = Range("E65536").End(xlUp).Row
>   For i = 6 To LstR
>   k = Cells(i, 5).Value - Cells(6, 7).Value'←この行でエラー発生
>    Select Case k
>     Case Is < 1
>      Cells(i, 5).Font.ColorIndex = 5
>     Case Is < 30
>      Cells(i, 5).Font.ColorIndex = 3
>     Case Else
>      Cells(i, 5).Font.ColorIndex = 1
>    End Select
>   Next
>End Sub
>
>表は次の通りです
>D列           H列
>6  2007/9/16     2007/9/16
>7  2007/10/2
>8  2007/9/15
>9  2007/10/26
>10  2007/10/15

【51424】Re:オーバーフローについて
発言  かみちゃん  - 07/9/16(日) 20:36 -

引用なし
パスワード
   こんにちは。かみちゃん です。

>整数型 (Integer) の変数は、16 ビット (2 バイト) の変数で、-32,768 〜 32,767 の範囲の値をとります。整数型の型宣言文字はパーセント記号 (%) です。
>
>これを踏まえて
>Sub test()
>  Dim i As Integer
>  Dim k As Long '←ここを変更Integer
>  Dim LstR As Integer
>   LstR = Range("E65536").End(xlUp).Row

変数LstRが行番号を示すならば、
  Dim LstR As Long
としておいたほうがいいと思います。

【51425】Re:オーバーフローについて
お礼  Midori  - 07/9/16(日) 20:47 -

引用なし
パスワード
   ▼SS さん:

Midori です。
ありがとうございました。
解決しました。

【51426】Re:オーバーフローについて
お礼  Midori  - 07/9/16(日) 20:49 -

引用なし
パスワード
   ▼かみちゃん さん:

そうですね。ありがとうございます。
いつも見させていただいています。
ありがとうございます。

5341 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free