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

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

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

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

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

3回答

1158閲覧

[マクロ初心者です]以下のコードの間違い理由がわかりません

athuhiro

総合スコア15

VBA

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

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2020/03/21 14:26

かなり基礎的なことで申し訳ないのですが、以下のコードでエラーが生じる理由がわかりません。どなたかご回答をお願い致します。
特に
単価 = Cells(i, 1)
数量 = Cells(i, 2)
この変数の代入が誤っている理由がわからないです。
どなたか教えて頂けますと、幸いです。
宜しくお願い致します。

vba

1Sub 練習問題() 2 3Dim 単価, 数量, i As Long 4単価 = 1 5数量 = 1 6i = 1 7単価 = Cells(i, 1) 8数量 = Cells(i, 2) 9 10For i = 2 To 13 11Cells(i, 3) = 単価 * 数量 12Next i 13 14End Sub

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

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

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

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

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

meg_

2020/03/21 14:36 編集

エラー発生場所とエラーメッセージも掲載してください。
athuhiro

2020/03/21 14:42 編集

meg_様 コメント有難うございます。 エラー発生場所は 単価 = Cells(i, 1) エラーメッセージは 実行時エラー"1004" アプリケーション定義またはオブジェクト定義にエラーがあります と表示されております。
otn

2020/03/21 15:05

エラーメッセージは質問文に追記しましょう。
guest

回答3

0

こんな感じかな?

ExcelVBA

1Sub 練習問題() 2 3 Dim 単価 As Double, 数量 As Double, i As Long 4 5 For i = 2 To 13 6 単価 = Cells(i, 1).Value2 7 数量 = Cells(i, 2).Value2 8 Cells(i, 3).Value = 単価 * 数量 9 Next 10End Sub

以下のコードでエラーが生じる理由がわかりません。

こちらでは、エラーになりませんでした。

i = 1

多分、試行錯誤の中で後で書かれたんではないかと推測します。

変数iが初期値の0だと、存在しないセルを指定することになるので、
オブジェクトの定義エラーになります。

変数の宣言は型の指定をちゃんと明示してください。
提示のコードは
単価と数量はVariant型を指定している意味になります。
ま、今回の件ではVariant型でも問題ないですが。
Valueプロパティを使うかValue2プロパティを使うかは気持ちの問題で、
通貨型とかの値ではないことが確実であればValueで問題ないです。
こちらでは、その辺が解らないので、Value2で書いてみました。

投稿2020/03/22 22:00

mattuwan

総合スコア2136

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

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

0

間違ってる場所はおそらく下記の3個所です。

1.単価 = Cells(i, 1)
2.数量 = Cells(i, 2)
3.Cells(i, 3) = 単価 * 数量

(A)
1.正しくは、単価 = Cells(i,1).Value
2.正しくは、数量 = Cells(i,2).Value
3.正しく、Cells(i,3).Value = 単価 * 数量

Excel側のセルの値を変数に代入したい場合には、Cells(行番号,列番号)の後に
.Valueが必要です。1と2の場合ですとセル自体を代入してることになりますので型が合わず
エラーが起きます。

投稿2020/03/21 15:26

Ainey

総合スコア11

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

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

otn

2020/03/21 17:04

これは関係ないです。
athuhiro

2020/03/22 03:09

Ainey様 回答有難う御座います。 間違いに気が付くことが出来ました。 単価 = Cells(i, 1) 数量 = Cells(i, 2) をIF文の中に入れたことで解決しました。
guest

0

ベストアンサー

対象のシートがアクティブになっていないのでしょう。
GUIで対象シートを選択して、そのシートが前面になっている状態にしてください。
(もしくはVBAで対象シートをactivateする)

投稿2020/03/21 15:13

otn

総合スコア84788

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

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

athuhiro

2020/03/22 03:10

otn様 回答ありがとうございます。 こちらも動かない原因の1つでした。 有難うございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問