発展1講座第1章 - データの「型」1

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

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

解説

変数宣言時に、データ型を指定する方法について説明します。

見積書の所定のセルに、「お見積額合計」という文字と、「合計金額」の値を入力するマクロです。変数宣言時にデータ型を指定していないとき、変数に間違えて違う型の値を入れていてもマクロは実行されてしまいます。そこで、変数宣言時に、データ型を指定することによって、あり得ない取り違いを防ぐことができます。

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

10984 : 小川慶一の回答 (2019-01-21 09:24:16)

morimotoさん:

データ型の指定はするべきです。

>途中のミスを発見してくれるサインとなっていることに感心しました

他のメリットもいろいろありますけどね。



> 何気なく薄い知識で基礎編の練習時にデーター型を定義して
> やっていました。理由はよくわかりませんでした。
> variant型は処理が遅くなるらしく避けてました。が、この講義をみて、
> 過去のコメントにもあったように、途中のミスを発見してくれるサインとなっていることに感心しました


10981 : morimotoさんのコメント (2019-01-20 22:27:45)

何気なく薄い知識で基礎編の練習時にデーター型を定義して
やっていました。理由はよくわかりませんでした。
variant型は処理が遅くなるらしく避けてました。が、この講義をみて、
過去のコメントにもあったように、途中のミスを発見してくれるサインとなっていることに感心しました


10854 : 小川慶一の回答 (2018-12-26 21:58:40)

tyuさん:

本ページでの他の方とのやりとりも参考にしてください。
ひきつづきよろしくお願いいたします☆


> 変数の型指定にはポカミスを防ぐメリットがあるというですね。
> とても腑に落ちました。


10849 : tyuさんのコメント (2018-12-26 21:23:54)

変数の型指定にはポカミスを防ぐメリットがあるというですね。
とても腑に落ちました。


10570 : 小川慶一の回答 (2018-09-17 09:19:12)

ゲストさん:

コメントありがとうございます。

「『そうそう!実際の業務だとそれが一番困る!』と納得」できるのは、ご自身の経験あればこそです。

変数のデータ型を指定することのメリットについては、発展編1を受講しはじめた方向けの説明としてはこんな感じですね。
変数の型を指定したほうがよい理由はほかにもありますが。

変数については、基礎編では、経験のない方向けの講座なので、データ型の話は思い切って省略しています。
発展編1では、データ型の指定について、一部だけ話しています。
発展編2でもさらにまた話がありますので、楽しみにしていてください☆


> 他の教材などだと、ただ「データ型は宣言するものだ」ということしか書かれていなくて、何のために必要なのかずっと疑問でしたが、やっと実質的な理由がわかりました。また、間違ったマクロを動かていて一番困ることも、「そうそう!実際の業務だとそれが一番困る!」と納得です。大変勉強になりました。


10569 : ゲストさんのコメント (2018-09-16 19:01:50)

他の教材などだと、ただ「データ型は宣言するものだ」ということしか書かれていなくて、何のために必要なのかずっと疑問でしたが、やっと実質的な理由がわかりました。また、間違ったマクロを動かていて一番困ることも、「そうそう!実際の業務だとそれが一番困る!」と納得です。大変勉強になりました。


10320 : 小川慶一の回答 (2018-08-05 10:28:00)

受講生 さん:

そのほかのメリットもありますが基礎編終了直後の方にとっての最大のメリットはおそらくそれですね。

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


> 今日から、発展編の学習を進めてきます。
> よろしくお願いします。
>
> 初日のアウトプット
> データの型を指定することで、入力ミスを防ぐことができる!


10314 : 受講生さんのコメント (2018-08-05 09:54:18)

今日から、発展編の学習を進めてきます。
よろしくお願いします。

初日のアウトプット
データの型を指定することで、入力ミスを防ぐことができる!


3872 : 小川慶一の回答 (2015-02-19 08:54:00)

匿名 さん:

丁寧に実装を進める面倒とあとで困る面倒のどちらを取るか?ということですね。
ひきつづきお楽しみください☆

>今日から、本格的に「発展編1」の学習をスタートしました。
>「Dim変数の後に、As LongやAs Stringを入れたら、入力することが増えるから大変になるのでは?」
>と、最初は思いましたが、長整数型や文字型と言った「型」を指定した方が、長いプログラムを書く時にミスを未然に防げるという説明を聞き、
>納得しました。
>引き続き、発展編でも、よろしくお願いいたしますm(__)m


3862 : 受講生さんのコメント (2015-02-17 23:58:40)

今日から、本格的に「発展編1」の学習をスタートしました。
「Dim変数の後に、As LongやAs Stringを入れたら、入力することが増えるから大変になるのでは?」
と、最初は思いましたが、長整数型や文字型と言った「型」を指定した方が、長いプログラムを書く時にミスを未然に防げるという説明を聞き、
納得しました。
引き続き、発展編でも、よろしくお願いいたしますm(__)


2742 : 小川慶一の回答 (2014-10-16 19:56:17)

匿名 さん:

いただいたサンプルを見て、僕もちょっと試してみました。

左右両辺とも文字列型のときのみ、「 + 」演算子が「 & 」と同様に文字列結合をするみたいですね。
そんなことしたこともなかったので、僕も勉強になりました。

Sub hoge()
    Dim s1 As String
    Dim s2 As String
    s1 = 1
    s2 = 2
    Debug.Print s1 + s2
    Debug.Print CInt(s1) + s2
    Debug.Print s1 + CInt(s2)
End Sub

Sub Sample()
    Dim buf1 As String, buf2 As String
    buf1 = InputBox("数値1を入力してください。")    '100を入力
    buf2 = InputBox("数値2を入力してください。")    '200を入力
    MsgBox buf1 + buf2
    MsgBox CInt(buf1) + buf2
    MsgBox buf1 + CInt(buf2)
End Sub


最も、実務で文字列型のもの同士を加算演算子で加算しようとするマクロを書く段階でもちょっと心配ですが、さらにテストもしないで結果に疑いを持たないようだったら別の意味でヤバいですね (^^;

>小川先生:
>最初に質問する前に、試してみたコードは以下のものでした。
>
>Sub Sample()
> Dim buf1 As String, buf2 As String
> buf1 = InputBox("数値1を入力してください。")  '100を入力
> buf2 = InputBox("数値2を入力してください。")  '200を入力
> MsgBox buf1 + buf2
>End Sub
>
>この例ですと「100200」となり、計算はできないのかと思ったのですが、
>"+"以外の演算子の場合は、うまく計算できるようです。
>最初に例外っぽいものに当たってしまった運の悪さもありますが、検証不足だったかもしれません。
>
>
>>匿名 さん:
>>
>>もしまだでしたら、テスト用のサンプルをいろいろ作って試してみてください。
>>デキる方には、そのほうがよいかと。
>>
>>それでしっくりこないことがあればまた質問してください。
>>
>>仮説は、以下の3つということですか。
>>[1] Long型の変数に文字列は代入できない
>>[2] String型の変数に数値を代入してもエラーにはならない
>>[3] [2]のとき使った変数は数値計算には使えない
>>
>>
>>>小川先生
>>>"Long型の変数に文字列は代入できないが、String型の変数に数値を代入してもエラーにはならない。
>>>ただし、文字列であるため計算はできない。"
>>>という解釈でよろしいでしょうか?
>>
>


2739 : 受講生さんのコメント (2014-10-15 20:33:41)

小川先生:
最初に質問する前に、試してみたコードは以下のものでした。

Sub Sample()
Dim buf1 As String, buf2 As String
buf1 = InputBox("数値1を入力してください。")  '100を入力
buf2 = InputBox("数値2を入力してください。")  '200を入力
MsgBox buf1 + buf2
End Sub

この例ですと「100200」となり、計算はできないのかと思ったのですが、
"+"以外の演算子の場合は、うまく計算できるようです。
最初に例外っぽいものに当たってしまった運の悪さもありますが、検証不足だったかもしれません。


>匿名 さん:
>
>もしまだでしたら、テスト用のサンプルをいろいろ作って試してみてください。
>デキる方には、そのほうがよいかと。
>
>それでしっくりこないことがあればまた質問してください。
>
>仮説は、以下の3つということですか。
>[1] Long型の変数に文字列は代入できない
>[2] String型の変数に数値を代入してもエラーにはならない
>[3] [2]のとき使った変数は数値計算には使えない
>
>
>>小川先生
>>"Long型の変数に文字列は代入できないが、String型の変数に数値を代入してもエラーにはならない。
>>ただし、文字列であるため計算はできない。"
>>という解釈でよろしいでしょうか?
>


2712 : 小川慶一の回答 (2014-10-13 20:27:55)

匿名 さん:

もしまだでしたら、テスト用のサンプルをいろいろ作って試してみてください。
デキる方には、そのほうがよいかと。

それでしっくりこないことがあればまた質問してください。

仮説は、以下の3つということですか。
[1] Long型の変数に文字列は代入できない
[2] String型の変数に数値を代入してもエラーにはならない
[3] [2]のとき使った変数は数値計算には使えない


>小川先生
>"Long型の変数に文字列は代入できないが、String型の変数に数値を代入してもエラーにはならない。
>ただし、文字列であるため計算はできない。"
>という解釈でよろしいでしょうか?


2703 : 受講生さんのコメント (2014-10-12 10:09:07)

小川先生
"Long型の変数に文字列は代入できないが、String型の変数に数値を代入してもエラーにはならない。
ただし、文字列であるため計算はできない。"
という解釈でよろしいでしょうか?


1985 : 小川慶一の回答 (2014-08-18 05:49:49)

匿名 さん:

コメントありがとうございます。
データ型の指定は、問題を未然に防ぐための方策という意味でも有意義ですね。


>データ型の指定方法、大変ためになりました。
>プログラムが最後まで動いて、それだけで満足してしまい、結果を確認しないことがたまにあります。
>これを使えば、ある程度は防げると思いました。


1977 : 受講生さんのコメント (2014-08-17 20:55:35)

データ型の指定方法、大変ためになりました。
プログラムが最後まで動いて、それだけで満足してしまい、結果を確認しないことがたまにあります。
これを使えば、ある程度は防げると思いました。


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

本講座の動画一覧

  1. 【動画1】 発展1講座イントロダクション - 使用するファイル、PDFの確認
    【動画1】 発展1講座イントロダクション - 使用するファイル、PDFの確認 未習得
  2. 【動画2】 発展1講座イントロダクション - デバッグ イミディエイトウィンド
    【動画2】 発展1講座イントロダクション - デバッグ イミディエイトウィンド 未習得
  3. 【動画3】 発展1講座第1章 - オープニング 第1章1
    【動画3】 発展1講座第1章 - オープニング 第1章1 未習得
  4. 【動画4】 発展1講座第1章 - オープニング 第1章2
    【動画4】 発展1講座第1章 - オープニング 第1章2 未習得
  5. 【動画5】 発展1講座第1章 - データの「型」1
    【動画5】 発展1講座第1章 - データの「型」1 未習得
  6. 【動画6】 発展1講座第1章 - データの「型」2
    【動画6】 発展1講座第1章 - データの「型」2 未習得
  7. 【動画7】 発展1講座第1章 - 変数の初期値
    【動画7】 発展1講座第1章 - 変数の初期値 未習得
  8. 【動画8】 発展1講座第1章 - ハンガリアン記法
    【動画8】 発展1講座第1章 - ハンガリアン記法 未習得
  9. 【動画9】 発展1講座第1章 - 変数宣言の強制1
    【動画9】 発展1講座第1章 - 変数宣言の強制1 未習得
  10. 【動画10】 発展1講座第1章 - 変数宣言の強制2
    【動画10】 発展1講座第1章 - 変数宣言の強制2 未習得
  11. 【動画11】 発展1講座第1章 - 総称オブジェクト型
    【動画11】 発展1講座第1章 - 総称オブジェクト型 未習得
  12. 【動画12】 発展1講座第1章 - 固有オブジェクト型
    【動画12】 発展1講座第1章 - 固有オブジェクト型 未習得
  13. 【動画13】 発展1講座第1章 - バリアント型
    【動画13】 発展1講座第1章 - バリアント型 未習得
  14. 【動画14】 発展1講座第2章 - オープニング 第2章
    【動画14】 発展1講座第2章 - オープニング 第2章 未習得
  15. 【動画15】 発展1講座第2章 - コレクション
    【動画15】 発展1講座第2章 - コレクション 未習得
  16. 【動画16】 発展1講座第2章 - コレクション(インデックス)
    【動画16】 発展1講座第2章 - コレクション(インデックス) 未習得
  17. 【動画17】 発展1講座第2章 - コレクション(インデックス)の具体例
    【動画17】 発展1講座第2章 - コレクション(インデックス)の具体例 未習得
  18. 【動画18】 発展1講座第2章 - プロパティ 従属要素のオブジェクト
    【動画18】 発展1講座第2章 - プロパティ 従属要素のオブジェクト 未習得
  19. 【動画19】 発展1講座第2章 - プロパティ 上位のオブジェクト
    【動画19】 発展1講座第2章 - プロパティ 上位のオブジェクト 未習得
  20. 【動画20】 発展1講座第2章 - プロパティ 同レベルのオブジェクト
    【動画20】 発展1講座第2章 - プロパティ 同レベルのオブジェクト 未習得
  21. 【動画21】 発展1講座第2章 - プロパティ 値として表現できるデータ
    【動画21】 発展1講座第2章 - プロパティ 値として表現できるデータ 未習得
  22. 【動画22】 発展1講座第2章 - プロパティ Offset
    【動画22】 発展1講座第2章 - プロパティ Offset 未習得
  23. 【動画23】 発展1講座第2章 - プロパティ Offsetの使い方
    【動画23】 発展1講座第2章 - プロパティ Offsetの使い方 未習得
  24. 【動画24】 発展1講座第2章 - End プロパティの使い方
    【動画24】 発展1講座第2章 - End プロパティの使い方 未習得
  25. 【動画25】 発展1講座第2章 - メソッド1
    【動画25】 発展1講座第2章 - メソッド1 未習得
  26. 【動画26】 発展1講座第2章 - メソッド2
    【動画26】 発展1講座第2章 - メソッド2 未習得
  27. 【動画27】 発展1講座第3章 - マクロの自動記録 イントロダクション
    【動画27】 発展1講座第3章 - マクロの自動記録 イントロダクション 未習得
  28. 【動画28】 発展1講座第3章 - マクロの自動記録 オートフィルタ1
    【動画28】 発展1講座第3章 - マクロの自動記録 オートフィルタ1 未習得
  29. 【動画29】 発展1講座第3章 - マクロの自動記録 オートフィルタ2
    【動画29】 発展1講座第3章 - マクロの自動記録 オートフィルタ2 未習得
  30. 【動画30】 発展1講座第3章 - マクロの自動記録 フォントの設定
    【動画30】 発展1講座第3章 - マクロの自動記録 フォントの設定 未習得
  31. 【動画31】 発展1講座第3章 - マクロの自動記録 カラーインデックス
    【動画31】 発展1講座第3章 - マクロの自動記録 カラーインデックス 未習得
  32. 【動画32】 発展1講座第3章 - マクロの自動記録 アンダースコア
    【動画32】 発展1講座第3章 - マクロの自動記録 アンダースコア 未習得
  33. 【動画33】 発展1講座第3章 - マクロの自動記録 途中改行1 入力支援機能
    【動画33】 発展1講座第3章 - マクロの自動記録 途中改行1 入力支援機能 未習得
  34. 【動画34】 発展1講座第3章 - マクロの自動記録 途中改行2
    【動画34】 発展1講座第3章 - マクロの自動記録 途中改行2 未習得
  35. 【動画35】 発展1講座第3章 - マクロの自動記録 並べ替え
    【動画35】 発展1講座第3章 - マクロの自動記録 並べ替え 未習得
  36. 【動画36】 発展1講座第3章 - マクロの自動記録 個人用マクロブック
    【動画36】 発展1講座第3章 - マクロの自動記録 個人用マクロブック 未習得
  37. 【動画37】 発展1講座第4章 - 論理演算子 イントロダクション
    【動画37】 発展1講座第4章 - 論理演算子 イントロダクション 未習得
  38. 【動画38】 発展1講座第4章 - 論理演算子 解説
    【動画38】 発展1講座第4章 - 論理演算子 解説 未習得
  39. 【動画39】 発展1講座第4章 - 構造文 イントロダクション
    【動画39】 発展1講座第4章 - 構造文 イントロダクション 未習得
  40. 【動画40】 発展1講座第4章 - For Each構文 イントロダクション1
    【動画40】 発展1講座第4章 - For Each構文 イントロダクション1 未習得
  41. 【動画41】 発展1講座第4章 - For Each構文 イントロダクション2
    【動画41】 発展1講座第4章 - For Each構文 イントロダクション2 未習得
  42. 【動画42】 発展1講座第4章 - For Each構文 イントロダクション3
    【動画42】 発展1講座第4章 - For Each構文 イントロダクション3 未習得
  43. 【動画43】 発展1講座第4章 - For Each構文 演習
    【動画43】 発展1講座第4章 - For Each構文 演習 未習得
  44. 【動画44】 発展1講座第4章 - For Each構文 伝票作成マクロ解説
    【動画44】 発展1講座第4章 - For Each構文 伝票作成マクロ解説 未習得
  45. 【動画45】 発展1講座第4章 - For Each構文 セルのコレクション
    【動画45】 発展1講座第4章 - For Each構文 セルのコレクション 未習得
  46. 【動画46】 発展1講座第4章 - For Each構文 カンニングペーパー
    【動画46】 発展1講座第4章 - For Each構文 カンニングペーパー 未習得
  47. 【動画47】 発展1講座第4章 - Do Loop構文 概要
    【動画47】 発展1講座第4章 - Do Loop構文 概要 未習得
  48. 【動画48】 発展1講座第4章 - Do Loop構文 マクロの流れ
    【動画48】 発展1講座第4章 - Do Loop構文 マクロの流れ 未習得
  49. 【動画49】 発展1講座第4章 - Do Loop構文 4つのパターン
    【動画49】 発展1講座第4章 - Do Loop構文 4つのパターン 未習得
  50. 【動画50】 発展1講座第4章 - Do Loop構文 マクロの強制終了
    【動画50】 発展1講座第4章 - Do Loop構文 マクロの強制終了 未習得
  51. 【動画51】 発展1講座第4章 - Exit For、Exit Do、Exit Sub
    【動画51】 発展1講座第4章 - Exit For、Exit Do、Exit Sub 未習得
  52. 【動画52】 発展1講座第4章 - Select Case 概要
    【動画52】 発展1講座第4章 - Select Case 概要 未習得
  53. 【動画53】 発展1講座第4章 - Select Case If文との比較
    【動画53】 発展1講座第4章 - Select Case If文との比較 未習得
  54. 【動画54】 発展1講座第4章 - Select Case 比較する条件の順番
    【動画54】 発展1講座第4章 - Select Case 比較する条件の順番 未習得
  55. 【動画55】 発展1講座第4章 - Select Case 複数条件の並べ方
    【動画55】 発展1講座第4章 - Select Case 複数条件の並べ方 未習得
  56. 【動画56】 発展1講座第4章 - Select Case 条件の範囲選択
    【動画56】 発展1講座第4章 - Select Case 条件の範囲選択 未習得
  57. 【動画57】 発展1講座第5章 - Sub プロシージャの分割と呼び出し
    【動画57】 発展1講座第5章 - Sub プロシージャの分割と呼び出し 未習得
  58. 【動画58】 発展1講座第5章 - Sub プロシージャを分割するメリット
    【動画58】 発展1講座第5章 - Sub プロシージャを分割するメリット 未習得
  59. 【動画59】 発展1講座第5章 - ステップアウト、ステップオーバー
    【動画59】 発展1講座第5章 - ステップアウト、ステップオーバー 未習得
  60. 【動画60】 発展1講座第5章 - モジュールレベル変数
    【動画60】 発展1講座第5章 - モジュールレベル変数 未習得
  61. 【動画61】 発展1講座第5章 - モジュールレベル変数の操作
    【動画61】 発展1講座第5章 - モジュールレベル変数の操作 未習得
  62. 【動画62】 発展1講座第5章 - モジュールレベル変数 変数の重複
    【動画62】 発展1講座第5章 - モジュールレベル変数 変数の重複 未習得
  63. 【動画63】 発展1講座第5章 - モジュールレベル変数 まとめ
    【動画63】 発展1講座第5章 - モジュールレベル変数 まとめ 未習得
  64. 【動画64】 発展1講座第5章 - モジュールレベル変数 アクセシビリティ設定
    【動画64】 発展1講座第5章 - モジュールレベル変数 アクセシビリティ設定 未習得

塾長 小川慶一

メニュー

コメント紹介

もっと見る

ページの先頭へ