質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

6233閲覧

VBA 型が一致しません。

nodact

総合スコア41

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2016/10/19 09:08

編集2016/10/19 09:41

早速なのですが、題の件です。

作業しているうえで何となく作ったVBAが動きません。
下記にコードを掲載いたします。
はじめは、なにも考えず作っていていざ動かそうとしてオーバーフローが発生いたしました。
iの宣言をintegerで宣言していて、ここかと思いLong型へ変更。
その他変数も、integerで収まらないケースが考えられるものに関してはLongに変更しました。
そして動かしてみたところ今度は型が一致しません。のエラーが発生しました。
VBAには慣れていなく、知識もなく初心者です。
何回か見直したのですが、私的には問題なく動く気がしたのですが。。。
そこで、職場のわかる人に聞いてみたのですが見当もつかないとのことでした。

単純なミスなのか、私がやりたいことはそもそもできないのか
わかる方ご教授いただけますと幸いです。

コードが見にくいかもしれません。また、基本的になっていないかもしれませんがどうかご協力お願いいたします。

Sub ikakunou()
Dim Sekibun_kaisu As Long
Dim Sekibun_hairetu() As Double
Dim Count As Long
Dim cell_num As Integer
Dim Sum As Double
Dim x As Long
Dim i As Long
Dim j As Long
Const start_pos = 5

Count = 0 Sekibun_kaisu = Range("D4") ReDim Sekibun_hairetu(Sekibun_kaisu) For x = 1 To Sekibun_kaisu Step 1 Sekibun_hairetu(x) = 0 Next For i = 1 To 61584 Step 1 Count = Count + 1 If (Count > Sekibun_kaisu) Then Count = 1 cell_num = start_pos + i Sekibun_hairetu(Count) = Cells(cell_num, 1) For j = 1 To Sekibun_kaisu Step 1 Sum = Sekibun_hairetu(j) + Sum Next Cells(cell_num, 5) = Sum Next

End Sub

以下追記

編集依頼文
coco_bauer様
2016/10/19 18:30
「型が一致しません」のエラーが発生するのは、"Sekibun_hairetu(Count) = Cells(cell_num, 1) "の部分ではないかと思います。セルに文字列等のDoubleに変換できない値が入っているためのエラーだと思いますから、エラーが発生した位置のセルの内容を確認してみてください。

上記のことで解決いたしました。
シートを全く疑っていませんでした。
ありがとうございました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

coco_bauer

2016/10/19 09:30

「型が一致しません」のエラーが発生するのは、"Sekibun_hairetu(Count) = Cells(cell_num, 1) "の部分ではないかと思います。セルに文字列等のDoubleに変換できない値が入っているためのエラーだと思いますから、エラーが発生した位置のセルの内容を確認してみてください。
nodact

2016/10/19 09:38

ご回答ありがとうございます。試してみたところその通りでした。コードではなく、シートのほうを全く疑っていませんでした。ありがとうございました。
guest

回答2

0

自己解決

編集依頼文
coco_bauer様
2016/10/19 18:30
「型が一致しません」のエラーが発生するのは、"Sekibun_hairetu(Count) = Cells(cell_num, 1) "の部分ではないかと思います。セルに文字列等のDoubleに変換できない値が入っているためのエラーだと思いますから、エラーが発生した位置のセルの内容を確認してみてください。

シートの方を修正することにより解決。

投稿2016/10/19 09:42

nodact

総合スコア41

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

動く動かないでいえば
integerは-32,768 ~ +32,767までしか入らないのでオーバーフローになる
cell_num integer を
cell_num long
にすれば動く

投稿2016/10/19 09:20

date

総合スコア1820

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nodact

2016/10/19 09:32

ご回答ありがとうございます。 早速試してみたのですが、 実行時エラー'13': 型が一致しません。 とのエラーが出て動きません。 根本的にまちがっているのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問