基礎講座第4章8 - 比較の条件設定バリエーション

この講座は有料講座です。
講座の購入後ご覧になれます。

ログインアカウントの新規作成

解説

ここでは、If文の骨格は同じまま、実務でありがちな条件のパターンをいろいろ紹介しています。作業の仕方としては、09:20くらいから、 "A5:J5" を "A" & gyo & ":J" & gyo と直しています。この過程でやっていることは、とても重要。「まずは、小さなものから。そしてだんだん大がかりに」です。

【この動画で使用する教材ファイル】
 ・Kiso04_03IfThen
 ・kiso_mm_movie.pdf(P7:主要な「構造」)
※講座内で使用する資料は、この個別ページ内でダウンロードできます。

この教材についての過去の質問・感想

11081 : jinoseさんのコメント (2019-02-06 09:25:02)

[感想]
9:00~の文字の範囲について要復習!


10840 : 小川慶一の回答 (2018-12-24 07:50:19)

受講生 さん:

お返事ありがとうございます。
ともあれ、活用してしまうのがよいかと思います。

使っているうちに目や手に馴染んできて、ついに解説!というときにも、すんなり入りやすいかと。

ひきつづきよろしくお願いいたします。

> わかりました。
> 発展編1を申込みましたので、そのときに改めて学習します。


10837 : 受講生さんのコメント (2018-12-23 18:13:52)

わかりました。
発展編1を申込みましたので、そのときに改めて学習します。


10836 : 小川慶一の回答 (2018-12-23 16:47:49)

tyuさん:

結論だけ書くと、最終行を調べるには、以下のように書きます。

A列なら:

Dim saigo
saigo = Range("A" & Rows.Count).End(xlUp).Row


第4章の各種問題で試してみてください。
(データが1個もない場合についても試してみてください)

ただし、基礎編レベルでは「なんて書いてあるのか?」とか、「なぜこのコードで動くのか?」とか、「このコードで問題なく動くようにするには、どんな条件を満たさなければならないか?」といったことは説明できないので、そこについては、 tyu さんがいずれ発展編1まで学習を進められることがあれば、そのときにと思います。

> データの数(行数)が可変である場合、for next の数値をどのようにするのがいいのでしょうか。一個もない場合も含めて。


10835 : tyuさんのコメント (2018-12-23 16:34:33)

データの数(行数)が可変である場合、for next の数値をどのようにするのがいいのでしょうか。一個もない場合も含めて。


9886 : 小川慶一の回答 (2018-05-01 09:46:57)

ゲストさん:

個々の部品に分けて作業するのがポイントです。
この考え方とそれに従った作業ができるようになれば、マクロはモノにできたようなものですよ!

ひきつづきお楽しみください☆


> とてもわかりやすいです!
> 今まで何度もIf構文とFor Next構文でつまづいていましたが、理解できていなかったのと、全体の構造をつかめていなかったことが、改めてわかりました。ありがとうございます。


9881 : ゲストさんのコメント (2018-05-01 07:13:41)

とてもわかりやすいです!
今まで何度もIf構文とFor Next構文でつまづいていましたが、理解できていなかったのと、全体の構造をつかめていなかったことが、改めてわかりました。ありがとうございます。


9722 : 小川慶一の回答 (2018-04-12 17:28:22)

morimotoさん:

>: j の部分を &で結合し、文字列にするため""をつけ & " : j"にするという理解でいいのでしょうか?

そういう悩まれ方をされているということは、理解以前に練習が足りないということです。

以下のドリルをやりなおしてください。
https://online.pc5bai.com/movie/index/25/119
https://online.pc5bai.com/movie/index/25/120

そのうえで、上記ページの他の受講生の方とのやりとりもひととおり読んでください。
(下にある投稿ほど古いものです)

特に、前者の「きんとうん」にかかるやりとりは参考になるかと。

頭で考える前に、手を使って細かいひとつひとつステップを踏んで作業する習慣を見につけてください。


9721 : morimotoさんのコメント (2018-04-12 15:42:30)

色をつけるコード
range("a" & gyo & ": j" & gyo)・・・文字列のdrillでも似たよ
うなことをやりましたが、ついrange("a" & gyo : "j" & gyo)書いてしますのですが(もちろんエラー) : j の部分を &で結合し、文字列にするため""をつけ & " : j"にするという理解でいいのでしょうか? 


8813 : 小川慶一の回答 (2017-08-30 21:18:29)

受講生 さん:

こんなの、かけ算九九よりだいぶ簡単です。
小学2年生修了経験があれば、覚えられますよ!

> If [条件]Then
> Else
> End If
> の型を紙に書いて暗記しよう。
>
> 複数条件は難しい。。。汗
>


8812 : 受講生さんのコメント (2017-08-30 21:17:08)

If [条件]Then
Else
End If
の型を紙に書いて暗記しよう。

複数条件は難しい。。。汗


7441 : 受講生さんのコメント (2016-12-21 12:18:14)

複数条件を入れるケースは少し難しかったです。


6080 : 小川慶一の回答 (2016-03-24 12:27:45)

受講生 さん:

>おだんご作りから始めて、1行テストで忠実にハナコのステップを進めると、確実に完成することを確認できました。
>こんなに簡単にIF構文が完成することに勇気づけられています。

手順の分解と忠実な実践がすべてです。


6023 : 受講生さんのコメント (2016-03-21 17:06:18)

じっくり動画の操作を見たのちに、自分でも同じ男性女性のif構文をつくってみました。
おだんご作りから始めて、1行テストで忠実にハナコのステップを進めると、確実に完成することを確認できました。
rangeのセル範囲指定にカウント変数をあてはめるところで何回か赤が出ましたが、
数字とそれ以外を切り分けてから変数にすると、うまくいきますね!
変数への加工にショートカットのコピペを使うことにも慣れてきました。
まだまだ練習が足りないですけれど、
こんなに簡単にIF構文が完成することに勇気づけられています。
gooska


5465 : 小川慶一の回答 (2015-12-17 17:47:02)

受講生 さん:

>ところで、条件文の方を2つにしたい場合、どういったコードを書けばよいのでしょうか。

演習問題の前半で登場します。お楽しみに☆


>Range("i" & cnt & ":j" & cnt).Font.Color = vbRedといった複数範囲指定と変数を組み合わせたコードを書くのは四苦八苦でした。特に":j"のように、:まで””で括るという発想が思いつきませんでしたので、参考になりました。
>ところで、条件文の方を2つにしたい場合、どういったコードを書けばよいのでしょうか。動画の中の例でいうと、男性でかつ合格した場合に、コメントを”やったね”とし、男性で不合格の場合には”次にがんばろう”、女性で合格した場合には”おめでとうございます”、女性で不合格の場合には”あとちょっとでしたね”などというようなケースを想定しています。


5463 : 受講生さんのコメント (2015-12-16 20:09:57)

Range("i" & cnt & ":j" & cnt).Font.Color = vbRedといった複数範囲指定と変数を組み合わせたコードを書くのは四苦八苦でした。特に":j"のように、:まで””で括るという発想が思いつきませんでしたので、参考になりました。
ところで、条件文の方を2つにしたい場合、どういったコードを書けばよいのでしょうか。動画の中の例でいうと、男性でかつ合格した場合に、コメントを”やったね”とし、男性で不合格の場合には”次にがんばろう”、女性で合格した場合には”おめでとうございます”、女性で不合格の場合には”あとちょっとでしたね”などというようなケースを想定しています。


5339 : 小川慶一の回答 (2015-11-27 19:33:00)

受講生 さん:

[Ctrl] + [Z] ではマクロで処理したエクセルファイルの状態を元に戻すことはできません。
心配な場合は、マクロ実行前にバックアップを作成しておき、それからマクロ実行!という流れでいくよりないですね。

あとは、ファイルは保存しないでまた開いて再度チャレンジか。

フォローアップ動画の中で、実際に僕がそういう作業をしている様子を収録している回がありますので、そちらも参考にしていただければと思います。



>小川様
>お世話になります。
>基本的な質問ですが、マクロ実行後に、エクセル画面上で元に戻す(例えばCtrl+Z)ことはできないのでしょうか。元に戻す矢印アイコンも無効になっているので無理だとは思いますが
>設定で変えることもできないのでしょうか。


5316 : 受講生さんのコメント (2015-11-25 04:47:59)

小川様
お世話になります。
基本的な質問ですが、マクロ実行後に、エクセル画面上で元に戻す(例えばCtrl+Z)ことはできないのでしょうか。元に戻す矢印アイコンも無効になっているので無理だとは思いますが
設定で変えることもできないのでしょうか。


4757 : 事務局の回答 (2015-07-30 16:08:31)

受講生 さん:
お世話になっております。

ご報告ありがとうございます。
VBA基礎編4章-4と4章-8の動画YouTubeリンク修正いたしました。
ご不便をおかけし申し訳ありませんでした。

引き続き、よろしくお願いいたします。

>小川先生、こんにちは。
>
>VBA基礎編4章-4と4章-8の動画のyoutubeへのリンクがありません。前回見たときはあったとおもいますが、なくなってしまったのでしょうか。


4755 : 受講生さんのコメント (2015-07-30 00:18:14)

小川先生、こんにちは。

VBA基礎編4章-4と4章-8の動画のyoutubeへのリンクがありません。前回見たときはあったとおもいますが、なくなってしまったのでしょうか。


2067 : 小川慶一の回答 (2014-08-22 09:54:58)

伊久間博之 さん:

>[1] 「gyo&」でひとつの変数としてみなされてしまい、結合演算子がない事になるので赤くなって怒られたということですか。
>[2] for next構文の例ではキーワードと数値の間にスペースがないため、やはりひとつの変数としてみなされて怒られると。

OKです。
>変数とキーワードの前後の状態に要注意。
>という認識でいいでしょうか?

OKです。

↓ただしこれは、サブプロシージャ名と変数名が同じですね。
変数の宣言もありませんので、いろいろな意味でNGです。

Sub to10()
    to10 = 2
    Range("A1") = to10   
End Sub


以下の動画も参考にしてください。
https://online.pc5bai.com/movie/index/25/105


2051 : 伊久間博之さんのコメント (2014-08-22 00:30:23)

間違えました
誤 Dim=◯◯◯

正 Dim ◯◯◯
◯◯◯=◎◎◎
 


2050 : 伊久間博之さんのコメント (2014-08-21 23:32:30)

小川慶一 さん:

①「gyo&」でひとつの変数としてみなされてしまい、結合演算子がない事になるので赤くなって怒られたということですか。
②for next構文の例ではキーワードと数値の間にスペースがないため、やはりひとつの変数としてみなされて怒られると。

試しに、

Sub to10()
to10 = 2
Range("A1") = to10
End Sub

とやってみたら、「コンパイルエラー:Fuctionまたは変数が必要です。」となりました。
つまり関数と数値とキーワード以外の文字列は変数として認識されてしまう。
また、「Dim=◯◯◯」で宣言しないと機能しない。
また、結合演算子がないので構文エラーになってしまう。

ので変数とキーワードの前後の状態に要注意。
という認識でいいでしょうか?


2028 : 小川慶一の回答 (2014-08-21 04:58:34)

伊久間博之 さん:

先に、結論を書きます。以下のとおりです。

変数やキーワードの直後のスペースを無くすのはやや危険。
というか、前後にスペースがはいるはずのところで構文エラーになってしまったら、そこがアウトの可能性大。

以下、基礎編レベルの知識ではちょっと難しいかもしれませんが、簡単に解説します。

- - -

実は、「型指定文字」というのがあります。

データ型の指定については発展編1で解説していますので今は深く触れませんが、「gyo&」と書くと、その変数には整数しか入れられない、という意味になります。(「gyo&」と、「&」まで含んだ形でひとつの変数名です)

分かりにくいので「gyo&」を説明の便宜上、「hoge」と置き換えてみます。
すると、いただいたコードの問題の箇所は、以下のようになります。

Range("a"&hoge":j"&gyo).Font.Color = vbRed

これは、 hoge と ":j" との間に結合演算子がないので構文エラーになります。

「gyo &」は、変数gyo と、 & 以降に続くものを結合するという意味になります。

- - -

続いて、for next 構文について。
以下の形について、「to」前後のスペースをなくして考えてみます。
for gyo = 2 to 10

このとき、考えられる構文エラーの理由は以下のとおり。

[1]
2 to10 → 「2」という数値と「to10」という変数があるとみなされる→「2」と「to10」との間に演算子がないので構文エラー。

[2]
2to10 → 「2to10」という変数があるとみなされる→変数名の先頭が数値なので構文エラー。

- - -

ということで。

以下、結論は以下です。

変数やキーワードの直後のスペースを無くすのはやや危険。
というか、前後にスペースがはいるはずのところで構文エラーになってしまったら、そこがアウトの可能性大。

..という解説でOKでしょうか?
まずは以上のとおりです。さらに何かあればご質問ください。


2022 : 伊久間博之さんのコメント (2014-08-21 01:00:30)

Sub rensyu03()
Dim gyo
For gyo = 2 To 11
If Range("e" & gyo).Value = "女性" Then
Range("i" & gyo) = "女性です"
Range("j" & gyo) = "ステキですね"
Range("a"&gyo&":j"&gyo).Font.Color = vbRed
とやると
Range("a"&gyo&":j"&gyo).Font.Color = vbRed
の部分が赤くなって怒られます。


2つめの&の前に空白を入れ、
Range("a"&gyo &":j"&gyo).Font.Color = vbRed
カーソル移動するとOKしてくれます。


上2つは入力するときに&の前に空白を
Range("i"&gyo) = "女性です"
Range("j"&gyo) = "ステキですね"
入れなくてもOKしてくれます。

たしか、エクセルマクロは空白とかをたくさん入れても、逆に入れなくても小人ちゃんが認識してくれる、ということだったような…
for next構文のtoの前後にも空白を入れないと認識してくれなかったり、空白が必要なものと不要なものの違いがよくわかりません。
文字色が&もToも黒、と言うことが関係ありそうなのですが、正解はなんですか?


3日がかりのその仕事、3分で終わらせる方法教えます。ガラパゴスタディーオンライン講座 ユーザー登録

本講座の動画一覧

  1. 【動画1】 基礎講座第1章1 - マクロの入ったファイルを開くときの注意点
    【動画1】 基礎講座第1章1 - マクロの入ったファイルを開くときの注意点 未習得
  2. 【動画2】 基礎講座第1章2 - オブジェクトの指定
    【動画2】 基礎講座第1章2 - オブジェクトの指定 未習得
  3. 【動画3】 基礎講座第1章3 - 色の指定
    【動画3】 基礎講座第1章3 - 色の指定 未習得
  4. 【動画4】 基礎講座第1章4 - コメントの活用
    【動画4】 基礎講座第1章4 - コメントの活用 未習得
  5. 【動画5】 基礎講座第1章5 - 算術演算子
    【動画5】 基礎講座第1章5 - 算術演算子 未習得
  6. 【動画6】 基礎講座第1章6 - 手書きする演習
    【動画6】 基礎講座第1章6 - 手書きする演習 未習得
  7. 【動画7】 基礎講座第1章7 - ワークシート関数との挙動の違い
    【動画7】 基礎講座第1章7 - ワークシート関数との挙動の違い 未習得
  8. 【動画8】 基礎講座第1章8 - 変数を使ったプログラム、変数を使う意義
    【動画8】 基礎講座第1章8 - 変数を使ったプログラム、変数を使う意義 未習得
  9. 【動画9】 基礎講座第1章9 - 変数を活用するときの注意点
    【動画9】 基礎講座第1章9 - 変数を活用するときの注意点 未習得
  10. 【動画10】 基礎講座第1章10 - 自動データヒント機能
    【動画10】 基礎講座第1章10 - 自動データヒント機能 未習得
  11. 【動画11】 基礎講座第1章11 - テストの方法
    【動画11】 基礎講座第1章11 - テストの方法 未習得
  12. 【動画12】 基礎講座第1章12 - ドリル
    【動画12】 基礎講座第1章12 - ドリル 未習得
  13. 【動画13】 基礎講座第2章1 - 第2章の概要
    【動画13】 基礎講座第2章1 - 第2章の概要 未習得
  14. 【動画14】 基礎講座第2章2 - 文字列とは
    【動画14】 基礎講座第2章2 - 文字列とは 未習得
  15. 【動画15】 基礎講座第2章3 - 文字列操作の基本
    【動画15】 基礎講座第2章3 - 文字列操作の基本 未習得
  16. 【動画16】 基礎講座第2章4 - セルの書式と、値の投入
    【動画16】 基礎講座第2章4 - セルの書式と、値の投入 未習得
  17. 【動画17】 基礎講座第2章5 - 文字列の結合
    【動画17】 基礎講座第2章5 - 文字列の結合 未習得
  18. 【動画18】 基礎講座第2章6 - セルやシートの指定に使われる文字列
    【動画18】 基礎講座第2章6 - セルやシートの指定に使われる文字列 未習得
  19. 【動画19】 基礎講座第2章7 - 日付の扱い
    【動画19】 基礎講座第2章7 - 日付の扱い 未習得
  20. 【動画20】 基礎講座第2章8 - ドリル1
    【動画20】 基礎講座第2章8 - ドリル1 未習得
  21. 【動画21】 基礎講座第2章9 - ドリル2
    【動画21】 基礎講座第2章9 - ドリル2 未習得
  22. 【動画22】 基礎講座第2章10 - ドリル3
    【動画22】 基礎講座第2章10 - ドリル3 未習得
  23. 【動画23】 基礎講座第2章11 - ドリル4
    【動画23】 基礎講座第2章11 - ドリル4 未習得
  24. 【動画24】 基礎講座第2章12 - ドリル5
    【動画24】 基礎講座第2章12 - ドリル5 未習得
  25. 【動画25】 基礎講座第3章1 - マクロを書く人のためのキーボード操作
    【動画25】 基礎講座第3章1 - マクロを書く人のためのキーボード操作 未習得
  26. 【動画26】 基礎講座第3章2 - マクロを書く人のためのショートカットキー操作
    【動画26】 基礎講座第3章2 - マクロを書く人のためのショートカットキー操作 未習得
  27. 【動画27】 基礎講座第3章3 - Left関数、Mid関数、Right関数
    【動画27】 基礎講座第3章3 - Left関数、Mid関数、Right関数 未習得
  28. 【動画28】 基礎講座第3章4 - Len関数、Instr関数
    【動画28】 基礎講座第3章4 - Len関数、Instr関数 未習得
  29. 【動画29】 基礎講座第3章5 - 手書きドリル1(関数の練習)
    【動画29】 基礎講座第3章5 - 手書きドリル1(関数の練習) 未習得
  30. 【動画30】 基礎講座第3章6 - 手書きドリル2(関数の練習)
    【動画30】 基礎講座第3章6 - 手書きドリル2(関数の練習) 未習得
  31. 【動画31】 基礎講座第3章7 - 住所情報を分割する(方針を考える)
    【動画31】 基礎講座第3章7 - 住所情報を分割する(方針を考える) 未習得
  32. 【動画32】 基礎講座第3章8 - 住所情報を分割する(方針の説明)
    【動画32】 基礎講座第3章8 - 住所情報を分割する(方針の説明) 未習得
  33. 【動画33】 基礎講座第3章9 - 住所情報を分割する(実習)
    【動画33】 基礎講座第3章9 - 住所情報を分割する(実習) 未習得
  34. 【動画34】 基礎講座第3章10 - プログラミング実習のまとめ
    【動画34】 基礎講座第3章10 - プログラミング実習のまとめ 未習得
  35. 【動画35】 基礎講座第4章1 - 第4章の概要
    【動画35】 基礎講座第4章1 - 第4章の概要 未習得
  36. 【動画36】 基礎講座第4章2 - ハナコのステップ
    【動画36】 基礎講座第4章2 - ハナコのステップ 未習得
  37. 【動画37】 基礎講座第4章3 - 「For Next構文」を覚える
    【動画37】 基礎講座第4章3 - 「For Next構文」を覚える 未習得
  38. 【動画38】 基礎講座第4章4 - 「For Next構文」の実習
    【動画38】 基礎講座第4章4 - 「For Next構文」の実習 未習得
  39. 【動画39】 基礎講座第4章5 - 「ハナコのステップ」のふりかえり
    【動画39】 基礎講座第4章5 - 「ハナコのステップ」のふりかえり 未習得
  40. 【動画40】 基礎講座第4章6 - If文
    【動画40】 基礎講座第4章6 - If文 未習得
  41. 【動画41】 基礎講座第4章7 - 「If文」の実習
    【動画41】 基礎講座第4章7 - 「If文」の実習 未習得
  42. 【動画42】 基礎講座第4章8 - 比較の条件設定バリエーション
    【動画42】 基礎講座第4章8 - 比較の条件設定バリエーション 未習得
  43. 【動画43】 基礎講座第4章9 - If文のその他の構文その1
    【動画43】 基礎講座第4章9 - If文のその他の構文その1 未習得
  44. 【動画44】 基礎講座第4章10 - If文のその他の構文その2
    【動画44】 基礎講座第4章10 - If文のその他の構文その2 未習得
  45. 【動画45】 補講:複数ファイル間でのデータ転記
    【動画45】 補講:複数ファイル間でのデータ転記 未習得

塾長 小川慶一

メニュー

コメント紹介

もっと見る

ページの先頭へ