こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

VBA オブジェクト定義エラー

VBA初心者です。
アプリケーション定義エラーまたはオブジェクト定義エラーが出ました。
原因を教えてください。


A=2800
B=3300
委託料=AとBの合計の5%

Cell(5,j)のセルにAとBの合計の5%の数値"305"を入力したいです。


Sub syouhinbubetu()

Dim Sheetobj As Worksheet
Dim A As Integer
Dim B As Integer
Dim 委託料 As Integer

Set Sheetobj = ThisWorkbook.Worksheets("Sheet1")
With Sheetobj


A = .Cells(3, j)
B = .Cells(4, j)
委託料 = .Cells(5, j)




For j = 3 To 6

.Cells(5, j) = (A + B) * 0.05


Next j


End With
End Sub

定義は、きちんと整数の定義にしているはずなのですが、どうしてでしょうか?

それから、もう一つ教えてください。
C/Dの値をセルに入れるのは次の式でよいと思いますが、

.Cells(7,j)=C/D

その数値が少数になる場合四捨五入をした値(小数点以下すべて切り捨て)を入れる場合はどのような式になりますか?

初心者過ぎて申し訳ありません。
VBAの基本の本で勉強したのですが、それを応用して実践する場合にどのようなプログラムになるのかが分かりません。
良い本があれば紹介していただけないでしょうか。
私が勉強した本は、「世界で一番簡単なExcel VBAのe本」です。
分かりやすい応用編の本があれば教えてください。

たくさんの質問で申し訳ありませんが、よろしくお願いいたします。

投稿日時 - 2012-01-28 17:09:45

QNo.7271596

困ってます

質問者が選んだベストアンサー

A = .Cells(3, j)
B = .Cells(4, j)
委託料 = .Cells(5, j)

For j = 3 To 6
.Cells(5, j) = (A + B) * 0.05
Next j
といった流れですが、たぶん最初のA = .Cells(3, j) でエラーが出ているのでは?
この場合の jには何も入っていませんよね。


For j = 3 To 6
A = .Cells(3, j)
B = .Cells(4, j)
.Cells(5, j) = (A + B) * 0.05
Next j
でないとおかしいですよね。
>その数値が少数になる場合四捨五入をした値(小数点以下すべて切り捨て)を入れる場合
.Cells(7, j) = INT((A + B) * 0.05)
小数点以下の切捨てならINT関数
四捨五入なら ROUND関数で調べてみてください。

投稿日時 - 2012-01-28 17:44:45

お礼

こんなどうしようもないミスにご回答下さりありがとうございました。
とても助かりました!!

投稿日時 - 2012-01-28 18:42:25

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

単純に
A = .Cells(3, j)
の実行時には、j (列番号)が決ってないだけではない?。お騒がせ。

投稿日時 - 2012-01-28 18:05:12

あなたにオススメの質問