[[20150626101107]] 『For文実行時にnの上限値を変更した際に『実行時エ』(sora) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『For文実行時にnの上限値を変更した際に『実行時エラー13 型が一致しません』が発生する』(sora)

Excel2010でVBAを作成して実行した際に上記のエラーが発生します。

連続すべきデータに不連続点があった場合にギャップ分だけ行を挿入する動作を実現するマクロを組もうと思ってます。
具体的には、

2015/6/21 7:47
2015/6/21 7:50
2015/6/21 7:51
2015/6/21 7:54
2015/6/21 7:56

のようなデータを

2015/6/21 7:47

2015/6/21 7:50
2015/6/21 7:51

2015/6/21 7:54

2015/6/21 7:56

とするマクロです。

私が書いたコードを載せると、

Sub rowsinsert()

Dim n As Long

Dim x As Double
Dim y As Double
Dim z As Double

For n = 2 To 100000

x = Cells(n, 1).Value
y = Cells(n + 1, 1).Value
z = y - x

If z > 0.0007 And z < 0.0014 Then

Rows(n + 1).Insert

ElseIf z > 0.0014 And z < 0.0021 Then

Rows(n + 1 & ":" & n + 2).Insert

ElseIf z > 0.0021 And z < 0.0028 Then

Rows(n + 1 & ":" & n + 3).Insert

ElseIf z > 0.0028 And z < 0.0035 Then

Rows(n + 1 & ":" & n + 4).Insert

ElseIf z > 0.0035 And z < 0.0042 Then

Rows(n + 1 & ":" & n + 5).Insert

ElseIf z > 0.0042 And z < 0.0049 Then

Rows(n + 1 & ":" & n + 6).Insert

ElseIf z > 0.0049 And z < 0.0056 Then

Rows(n + 1 & ":" & n + 7).Insert

ElseIf z > 0.0056 And z < 0.0063 Then

Rows(n + 1 & ":" & n + 8).Insert

ElseIf z > 0.0063 And z < 0.007 Then

Rows(n + 1 & ":" & n + 9).Insert

ElseIf z > 0.007 And z < 0.0077 Then

Rows(n + 1 & ":" & n + 10).Insert

Else

End If

Next n

End Sub

です。
このコードのFor文でnの上限値を1000としたときは問題なく動作しますが、2000や10000と上げたときに
『実行時エラー13 型が一致しません』
とでてしまい上手くいきません。

VBAに関しては素人なので原因が全く分からずに困り果ててます。
どなたかお力を貸していただけないでしょうか?
よろしくお願い致します。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 どこでエラーが出ているかも書いてくれ。

 で、エラーの原因だが、エラー発生時のn行あたり(1000行目以降?)に文字列が入っていないか?
(ねむねむ) 2015/06/26(金) 10:27

ねむねむさん

ご回答ありがとうございます!
おかげ様で問題が解決しました!

どこでエラーが出ているのかを確認する方法が分からなかったのですが、
ご指摘の通り、1000行目以降に文字列が入っていました。

そこで、n値を文字列に該当する値にしてステップ実行したところ、

x = Cells(n, 1).Value
y = Cells(n + 1, 1).Value

部分でエラーが出ていました。

なので、文字列を全て削除したところ正常に動作してくれるようになりました。

本当に助かりました!
ご厚意に感謝いたします!
(sora) 2015/06/26(金) 10:43



コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.