5倍速!メールマガジン
外部アカウントで登録
受講生の声
新着の講座投稿
新着の講座コメント
新着のノート投稿
投稿一覧へ新着のノートコメント
表示できる投稿はありません。
サイト運営者紹介
小川 慶一講師/教材/システム開発者紹介
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
表示できる投稿はありません。
この学習サイトの教材制作、サポート、システム開発をすべてやっています。
受講生さんの投稿
(投稿ID: 4633)
早速実務でも使ってみました。
在庫回転率(売上原価÷期末在庫)
3以上=”A”
2以上="B"
1以上="C"
1未満="D"
#DIV/0!="在庫ゼロ"
と表示させたいと思いました。
数値になっている部分は、条件分岐しても問題なく動くのですが、
#DIV/0!は「実行値エラー"13" 型が一致しません」の通知がきて、
動きがそこで止まってしまいます。
(#DIV/0!は” ”で囲っています。囲わない場合赤字になりました。)
エラー値の場合、何か特別の処理をしなくてはならないのでしょうか?
(急ぎではないので、以降の講座で出てくるのであれば、その際に学習します。)
小川 慶一さんのコメント
(コメントID: 6413)
こんにちは。
書いたマクロを貼り付けていただけますか。コード全体を見ないと分からなそうです。
よろしくお願いいたします。
> 条件分岐構文(If_ Then_Elseif_ End if とFor_ Nextの組み合わせ)で1点質問です。
> 早速実務でも使ってみました。
> 在庫回転率(売上原価÷期末在庫)
> 3以上=”A”
> 2以上="B"
> 1以上="C"
> 1未満="D"
> #DIV/0!="在庫ゼロ"
> と表示させたいと思いました。
> 数値になっている部分は、条件分岐しても問題なく動くのですが、
> #DIV/0!は「実行値エラー"13" 型が一致しません」の通知がきて、
> 動きがそこで止まってしまいます。
> (#DIV/0!は” ”で囲っています。囲わない場合赤字になりました。)
> エラー値の場合、何か特別の処理をしなくてはならないのでしょうか?
> (急ぎではないので、以降の講座で出てくるのであれば、その際に学習します。)
受講生さんのコメント
(コメントID: 6414) 添付ファイルのダウンロード権限がありません
> 受講生 さん:
>
> こんにちは。
> 書いたマクロを貼り付けていただけますか。コード全体を見ないと分からなそうです。
> よろしくお願いいたします。
>
>
> > 条件分岐構文(If_ Then_Elseif_ End if とFor_ Nextの組み合わせ)で1点質問です。
> > 早速実務でも使ってみました。
> > 在庫回転率(売上原価÷期末在庫)
> > 3以上=”A”
> > 2以上="B"
> > 1以上="C"
> > 1未満="D"
> > #DIV/0!="在庫ゼロ"
> > と表示させたいと思いました。
> > 数値になっている部分は、条件分岐しても問題なく動くのですが、
> > #DIV/0!は「実行値エラー"13" 型が一致しません」の通知がきて、
> > 動きがそこで止まってしまいます。
> > (#DIV/0!は” ”で囲っています。囲わない場合赤字になりました。)
> > エラー値の場合、何か特別の処理をしなくてはならないのでしょうか?
> > (急ぎではないので、以降の講座で出てくるのであれば、その際に学習します。)
お世話になります。コードは以下の通りです。
また、Excelの画面とVBAの画面を並列したものを添付いたします。
よろしくお願いします。
小川 慶一さんのコメント
(コメントID: 6415)
なるほど。
興味深いですね。
不等号で比較できるのは数値同士です。
エラーになった箇所では、右辺は数値でしたが、左辺は数値ではありませんでした。
エラーが出てしまったのは、そのためです。
..と、受講生さんならこの説明で通じるかなと思うのですが。どうでしょう?
参考になりそうなプログラムを4つ用意しました。
まず、いただいたエクセルファイル上で以下の4つのプログラムを実行してみてください。
hikaku_test1は最後まで実行できます。あとの3つはいずれも最後までいけません。
いたたいたプログラムでは、hikaku_test4 と同じことが起こっています。
エラーになった箇所では、右辺は数値でしたが、左辺は数値ではありませんでした。
なお、いただいたプログラム、僕なら、エクセル関数とマクロという2つの「P」(*DPR講座参照 https://www.exvba.com/dpr.php)が登場するのを嫌って以下のように書くと思います。
(そもそもD列のセルに式を埋め込まない)
もっとも、これでも、0で割り算するときに生じる問題を解決できません。
ということで、最終形態に近い形は以下。
上に示したコードで、[*1]-[*2]は以下のように書き換えられます。
If ... ElseIf ... ElseIf ... で比較対象が同じ場合はこう書いたほうがすっきりします。発展編1レベル。
もっとリライトできますが、まずはこのくらいで。
> 小川慶一さん:
>
> お世話になります。コードは以下の通りです。
> また、Excelの画面とVBAの画面を並列したものを添付いたします。
> よろしくお願いします。
> Sub zaiko()
> Dim gyo
> For gyo = 2 To 10
> If Range("D" & gyo).Value > 3 Then
> Range("E" & gyo).Value = "A"
> ElseIf Range("D" & gyo).Value > 2 Then
> Range("E" & gyo).Value = "B"
> ElseIf Range("D" & gyo).Value > 1 Then
> Range("E" & gyo).Value = "C"
> ElseIf Range("D" & gyo).Value > 0 Then
> Range("E" & gyo).Value = "D"
> ElseIf Range("D" & gyo).Value = "#DIV/0!" Then
> Range("E" & gyo).Value = "在庫ゼロ"
> End If
>
> Next
>
> End Sub
>
受講生さんのコメント
(コメントID: 6416) 添付ファイルのダウンロード権限がありません
> 受講生 さん:
>
> なるほど。
> 興味深いですね。
>
> 不等号で比較できるのは数値同士です。
> エラーになった箇所では、右辺は数値でしたが、左辺は数値ではありませんでした。
>
> エラーが出てしまったのは、そのためです。
> ..と、受講生さんならこの説明で通じるかなと思うのですが。どうでしょう?
>
> 参考になりそうなプログラムを4つ用意しました。
>
> まず、いただいたエクセルファイル上で以下の4つのプログラムを実行してみてください。
> hikaku_test1は最後まで実行できます。あとの3つはいずれも最後までいけません。
>
>
>
> いたたいたプログラムでは、hikaku_test4 と同じことが起こっています。
> エラーになった箇所では、右辺は数値でしたが、左辺は数値ではありませんでした。
>
> なお、いただいたプログラム、僕なら、エクセル関数とマクロという2つの「P」(*DPR講座参照 https://www.exvba.com/dpr.php)が登場するのを嫌って以下のように書くと思います。
> (そもそもD列のセルに式を埋め込まない)
>
>
>
> もっとも、これでも、0で割り算するときに生じる問題を解決できません。
> ということで、最終形態に近い形は以下。
>
>
>
> 上に示したコードで、[*1]-[*2]は以下のように書き換えられます。
> If ... ElseIf ... ElseIf ... で比較対象が同じ場合はこう書いたほうがすっきりします。発展編1レベル。
>
>
>
> もっとリライトできますが、まずはこのくらいで。
>
> > 小川慶一さん:
> >
> > お世話になります。コードは以下の通りです。
> > また、Excelの画面とVBAの画面を並列したものを添付いたします。
> > よろしくお願いします。
> > Sub zaiko()
> > Dim gyo
> > For gyo = 2 To 10
> > If Range("D" & gyo).Value > 3 Then
> > Range("E" & gyo).Value = "A"
> > ElseIf Range("D" & gyo).Value > 2 Then
> > Range("E" & gyo).Value = "B"
> > ElseIf Range("D" & gyo).Value > 1 Then
> > Range("E" & gyo).Value = "C"
> > ElseIf Range("D" & gyo).Value > 0 Then
> > Range("E" & gyo).Value = "D"
> > ElseIf Range("D" & gyo).Value = "#DIV/0!" Then
> > Range("E" & gyo).Value = "在庫ゼロ"
> > End If
> >
> > Next
> >
> > End Sub
> >
小川慶一さん:
非常に詳しいご説明、ありがとうございました。
> 不等号で比較できるのは数値同士です。
確かに!と思いました。
おそらく、IF関数で、文字列A2が「りんご」だったらB2は「〇」というようなことを実務でやっていたので、その延長線上で考えていたのですね。(画像添付します。)IF関数だと文字列を「=」で表現しても結果が出てたので同じことができるだろう、と思ってました。
また、変数の中に割り算を埋め込むという考え方があるのか!と驚きました。
フォローアップベーシックまできて、急に難易度が上がって、復習しつつのため、進捗は遅くなってますが、色々なことができることがわかって、楽しいです。一歩一歩着実に、理解しながら進めていきます。
引き続きよろしくお願いします。
小川 慶一さんのコメント
(コメントID: 6417)
> また、変数の中に割り算を埋め込むという考え方があるのか!と驚きました。
変数に埋め込んでいるのは「割り算」ではなく、「割り算の計算結果」です。
以下の動画(と、その周辺の動画)で復習してください。5:00をすぎたところでそう説明しています。
○基礎講座第1章8 - 変数を使ったプログラム、変数を使う意義
https://forum.pc5bai.com/lesson/page/104?t=1582471557
数値、文字列の比較演算についてまとめてみました。
サンプルファイルもダウンロード可能な場所に置きました。
G-L列の値を消してマクロを実行してみてください。
https://www.dropbox.com/s/x0r5bswlrv73811/200223.xlsm?dl=0
> 小川慶一さん:
> 非常に詳しいご説明、ありがとうございました。
> > 不等号で比較できるのは数値同士です。
> 確かに!と思いました。
> おそらく、IF関数で、文字列A2が「りんご」だったらB2は「〇」というようなことを実務でやっていたので、その延長線上で考えていたのですね。(画像添付します。)IF関数だと文字列を「=」で表現しても結果が出てたので同じことができるだろう、と思ってました。
> また、変数の中に割り算を埋め込むという考え方があるのか!と驚きました。
> フォローアップベーシックまできて、急に難易度が上がって、復習しつつのため、進捗は遅くなってますが、色々なことができることがわかって、楽しいです。一歩一歩着実に、理解しながら進めていきます。
> 引き続きよろしくお願いします。
受講生さんのコメント
(コメントID: 6419)
> 受講生 さん:
>
> > また、変数の中に割り算を埋め込むという考え方があるのか!と驚きました。
>
> 変数に埋め込んでいるのは「割り算」ではなく、「割り算の計算結果」です。
> 以下の動画(と、その周辺の動画)で復習してください。5:00をすぎたところでそう説明しています。
>
> ○基礎講座第1章8 - 変数を使ったプログラム、変数を使う意義
> https://forum.pc5bai.com/lesson/page/104?t=1582471557
>
>
> 数値、文字列の比較演算についてまとめてみました。
>
>
>
> サンプルファイルもダウンロード可能な場所に置きました。
>
> G-L列の値を消してマクロを実行してみてください。
> https://www.dropbox.com/s/x0r5bswlrv73811/200223.xlsm?dl=0
>
>
> > 小川慶一さん:
> > 非常に詳しいご説明、ありがとうございました。
> > > 不等号で比較できるのは数値同士です。
> > 確かに!と思いました。
> > おそらく、IF関数で、文字列A2が「りんご」だったらB2は「〇」というようなことを実務でやっていたので、その延長線上で考えていたのですね。(画像添付します。)IF関数だと文字列を「=」で表現しても結果が出てたので同じことができるだろう、と思ってました。
> > また、変数の中に割り算を埋め込むという考え方があるのか!と驚きました。
> > フォローアップベーシックまできて、急に難易度が上がって、復習しつつのため、進捗は遅くなってますが、色々なことができることがわかって、楽しいです。一歩一歩着実に、理解しながら進めていきます。
> > 引き続きよろしくお願いします。
>
小川慶一さん:
>変数に埋め込んでいるのは「割り算」ではなく、「割り算の計算結果」です。
>以下の動画(と、その周辺の動画)で復習してください。5:00をすぎたところでそう説明しています。
おっしゃる通りです。小人さんの動画でちゃんとご説明いただいてますね。その時はわかったつもりで、まだ身についていなかったのですね。
きちんと復習します。
また、詳細なパターンでのご説明ありがとうございました。
実行してみて、コードの書き方次第で、様々な結果を出せることに
驚いております。
文字列と文字コードの違いなど、奥が深いなと思いました。
地道に各コードの意味を理解しながら身に着けていき、
実務でも使えるように
していきたいと思います。
小川 慶一さんのコメント
(コメントID: 6420)
> おっしゃる通りです。小人さんの動画でちゃんとご説明いただいてますね。その時はわかったつもりで、まだ身についていなかったのですね。
一度説明されたくらいですべて理解できるようなら、エクセルマクロは誰でもモノにできるようなスキルでしょう。
知識と体験がついてからでないと気づけないことも多くあります。
地図を見るにしても、一度も行ったことのないところの地図を見るのと、一度行ったことがあるところの地図を読むのでは違いますね。それと同じです。
基礎編フォローアップベーシックは、何度も復習するとよいです。
そのたびに受講生さんの頭の中のマクロについての地図がさらに整理されていくものと思います。
演習を解くことは体験です。そのうえで解説を復習することで知識が強化されていきます。
> 小川慶一さん:
> >変数に埋め込んでいるのは「割り算」ではなく、「割り算の計算結果」です。
> >以下の動画(と、その周辺の動画)で復習してください。5:00をすぎたところでそう説明しています。
> おっしゃる通りです。小人さんの動画でちゃんとご説明いただいてますね。その時はわかったつもりで、まだ身についていなかったのですね。
> きちんと復習します。
> また、詳細なパターンでのご説明ありがとうございました。
> 実行してみて、コードの書き方次第で、様々な結果を出せることに
> 驚いております。
> 文字列と文字コードの違いなど、奥が深いなと思いました。
> 地道に各コードの意味を理解しながら身に着けていき、
> 実務でも使えるように
> していきたいと思います。