Excel VBA質問箱 IV

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

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


7616 / 76736 ←次へ | 前へ→

【74706】Re:アプリケーション定義またはオブジェクト定義のエラーとでてしまいます
発言  kanabun  - 13/9/1(日) 10:19 -

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

>とちゅうでアプリケーション定義またはオブジェクト定義のエラーと表示され
>1行目に1が入ったところで止まります

>  Do Until ActiveCell.Value = "end"
>    If IsNumeric(ActiveCell.Value) Then
>      Dim K As Integer
>      For K = 1 To 1000
>        ActiveCell.Offset(0, 10).Value = K
>        ActiveCell.Offset(0, -10).Select
>      Next K
>    End If
>    ActiveCell.Offset(1, 0).Select
>  Loop

すざましいことをしていますね!?!?
アプリケーション定義エラーの直接の原因は ◆ の行にあります。
>      For K = 1 To 1000
>        ActiveCell.Offset(0, 10).Value = K
>        ActiveCell.Offset(0, -10).Select '◆
>      Next K

いまLoopの最初のセルは[I2]です。ここがActiveCellです。
ここに数値が入っているか、空白ですと、プログラムの実行は
ActiveCell.Offset(0, 10) セルに 1000回 値K を書き込む処理をしています。
(何のために 1000回 同じセルに書き込む必要があるのか? ここも疑問ですけど)

たとえば そこを
繰り返しなしで
         K = K + 1
>        ActiveCell.Offset(0, 10).Value = K
>        ActiveCell.Offset(0, -10).Select '◆

と修正したとしましょう。
それでもエラーは出ます。
理由は ◆のところで [I2]セルから 10列左 のセルを Select しなさい、
となっているからです。I列から 10列左のセル なんてないですよね?

こういうのは、 最初に "end" のあるセルを Findメソッドか Worksheetの
Match関数で見つけておいて [I2] から その"end" のあるセルのひとつ上の
セルまで For Each Next で Loopするとしたほうが分りやすいし、効率的です。

それから、さっきも言いましたが、

Dim c As Range
For Each c In Range([I2:I30]
>   If IsNumeric(c.Value) Then

IsNumericは数値化可能かどうか調べる関数で、空白セルも(0に数値化可能
なので)IsNumeric(空白セル.Value) は True になります。
ここは2重のIf文にして、
最初に If Not IsEmpty(c.Value) Then で 空白セルでないことを判断し、
その中で(空白セルでないときのみ)
     If IsNumeric(c.Value) Then
とすべきです。

他にもありますが、とりあえず、この辺りを再調査してコーディングして
みてください。

0 hits

【74704】アプリケーション定義またはオブジェクト定義のエラーとでてしまいます KK 13/9/1(日) 1:40 質問
【74705】Re:アプリケーション定義またはオブジェク... Yuki 13/9/1(日) 10:10 発言
【74707】Re:アプリケーション定義またはオブジェク... KK 13/9/1(日) 11:07 お礼
【74706】Re:アプリケーション定義またはオブジェク... kanabun 13/9/1(日) 10:19 発言
【74708】Re:アプリケーション定義またはオブジェク... KK 13/9/1(日) 11:20 お礼
【74709】Re:アプリケーション定義またはオブジェク... kanabun 13/9/1(日) 11:31 発言
【74710】Re:アプリケーション定義またはオブジェク... KK 13/9/1(日) 12:56 お礼

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