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

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

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

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

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

Q&A

解決済

3回答

1442閲覧

VBA IF文について

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

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

if

if文とは様々なプログラミング言語で使用される制御構文の一種であり、条件によって処理の流れを制御します。

0グッド

0クリップ

投稿2018/04/22 22:03

ひとつ隣のセルに+1した値を表示させたい

G列に表示されている値を隣のH列で+1した状態で表示をIF文を使って表示させたいのですが、
うまくいきません。よろしければご教授ください。

発生している問題・エラーメッセージ

Nextで指定された変数の参照が不正です

該当のソースコード

Sub Ara()
Dim a As Integer
Dim b As Integer

For a = 3 To 32
For b = 8 To 10

If Cells(a, b) <> "" Then Cells(a, 9) = Cells(a, b) + 1 End If Next a Next b

End Sub

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

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

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

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

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

guest

回答3

0

その程度なら、数式でやった方が無難では??

投稿2018/04/23 00:21

ExcelVBAer

総合スコア1175

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

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

ExcelVBAer

2018/04/23 00:23

勘違いされてそうですが、ここは技術者のコミュニティであって、指南・指導を求めるのであれば、本の1冊でも勉強されてから質問するべきだと思います。
m.ts10806

2018/04/23 00:29

学校の課題か何かのような気もしますね。
退会済みユーザー

退会済みユーザー

2018/04/23 11:44

すみません。一応IT業界に転職して1週間で今現場で業務の傍ら課題をもらってる形です。 本1冊を勉強しながら分からないところを質問してますが、不快に思われたならすみません。
ExcelVBAer

2018/04/24 01:29 編集

オススメは「ExcelVBAを実務で使い倒す技術」 どちらかというとIT目線で書かれてるから、役立つことが多いと思うよ。 先輩も知らない事が書かれているかもね~
guest

0

G列+1の値をH列に入れるだけですので、二重ループは必要ありません。

VBA

1Sub Ara() 2 Dim a As Integer 3 For a = 3 To 32 4 ' G列を参照 5 If Cells(a, 7) <> "" Then 6 ' H列にG列+1の値を代入 7 Cells(a, 8) = Cells(a, 7) + 1 8 End If 9 Next a 10End Sub 11

投稿2018/04/22 23:53

ttyp03

総合スコア16998

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

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

退会済みユーザー

退会済みユーザー

2018/04/23 11:30

ありがとうございます。さっそく試してみようと思います。
ttyp03

2018/04/23 11:59

結果はどうだったのですか? ベストアンサーに選ばれなかったので、間違った回答だったのでしょうか?
guest

0

ベストアンサー

まず、「うまくいきません」だけでは何もわかりません。
何がどううまくいっていないのか、エラーが発生しているのか、動いてはいるけど期待した結果にならないのか。
それが書いていないということは「そんなの回答する人がコードを動かして確認してよ」って意味になってしまいますよ。

追記
すみません、「Nextで指定された変数の参照が不正です」が出ているという部分を見落としていました。
これが出ているのならFor~Nextループを真っ先に確認しましょう。


初心者さんなのかもしれませんが、技術者であるなら(またはそれを目指しているのなら)行き詰った時も落ち着いてコードを見直す習慣を身につけましょう。

・問題が発生する箇所はどこですか?
・G列の値に+1しているのはどこですか?
・質問には「IFを使用したい」とだけ書かれていますが、IFで判別したい条件は何ですか?

ここらへんを意識してコードに1行ずつコメントをつけてみてください。
やりたいことと実装の矛盾が見えやすくなります。

今回は私のほうでコメントをつけてみました。
やりたいことと矛盾しているのはどこですか?
うまく動かなそうなところはどこですか?

Sub Ara() Dim a As Integer Dim b As Integer '行ループ(3行目~32行目) For a = 3 To 32 '列ループ(H列~J列) For b = 8 To 10 If Cells(a, b) <> "" Then 'b列a行が空でない場合 'I列a行のセルにb列a行のセルの値+1をセットする ⇒G列は計算していない Cells(a, 9) = Cells(a, b) + 1 End If Next a '行ループここまで?⇒ネスト誤り Next b '列ループここまで?⇒ネスト誤り End Sub

がんばってみてください。

投稿2018/04/23 04:40

編集2018/04/23 04:46
jawa

総合スコア3013

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

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

退会済みユーザー

退会済みユーザー

2018/04/23 11:39

ご回答ありがとうございます。 上記のご指摘確かにその通りです。IT業界に入って1週間足らずのため、少し慌ててたかもしれません。 落ち着いて考えることを心がけていきたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問