• ベストアンサー

MicroSoft BasicのDim文とVisualBasicのDim文の違い

私が20年前にMicroSoft Basicを使っていたときは、DIM文はDIMENSIONの略で配列型変数の宣言に使っていました。 最近VisualBasicの勉強を始めたのですが、変数の宣言はすべてDim文になっており、昔のMS BasicのDim文と意味合いが変わっているのに驚いています。 ここで質問させてください。 ・なぜ配列を意味するDimension文が変数の宣言なのか? ・どのバージョンのBasicからDim文の意味が変わったのか? 私が使用していたのはNEC N-Basic,N-88Basic,N-98Basicです。

noname#40977
noname#40977

質問者が選んだベストアンサー

  • ベストアンサー
  • ArukuMail
  • ベストアンサー率22% (115/510)
回答No.1

VISUAL BASIC のDimは ディメンジョンの略です。 私の経験ではVB2.0時代からありました。 配列0を考えた場合変数とおなじであるからだとおもいます

noname#40977
質問者

お礼

納得です。 「0次元の配列」のアイデアに思い至りませんでした。 どうもありがとうございました。

その他の回答 (1)

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.2

変数は、Dim A 配列は、Dim B(10) ,Dim C() とする事で使い分けが行われています。 配列の要素数が指定されていない場合は、通常の変数。 "()" があり、要素数が指定されていない場合は、後から要素数を可変できる配列となっています。 "Dim" なしでも変数や配列の宣言は可能ですが、きちんとDim で変数宣言することに意義があると思います。

noname#40977
質問者

お礼

ご回答ありがとうございました。 私はCも使っていましたので変数の宣言が必要なこと自体は理解しています。 昔のBASICは配列を宣言するときにだけ使われていたDIM文がなぜ非配列変数の宣言にも使われるのか不思議に思っていました。 別な方の回答「0次元の配列」という説明で納得いきました。

関連するQ&A

  • Dim は何の略ですか?

    エクセルで変数の型宣言をするとき、例えば Dim 変数 As Integer と書きますが、このDimは何の略でしょうか? 宣言はdeclarationだし、Dimから考えられるのは Dimensionですが、これは次元とかの意味で少し 違うような気がするのですが。

  • Dimとは何かの略ですか?

    変数を使うにあたって宣言するときのDimですが、これは何の略ですかね? ディメンション=次元?

  • Dimとは・・・

    変数の宣言をする時の「Dim」は何の略でしょうか… ほかにもプログラムをやっていて、何の略かわからないとなかなか覚えられません。よいサイトをご存知の方お願いします。

  • FORTRANのCOMMON文

    COMMON文について教えてください。 本を見ると R(2,2)という配列を共有したいとき R(2,2)を主プログラムで定義しているとき 主プログラムとR(2,2)を使うサブルーチンの 両方でCOMMON文を書く必要がある。 というような内容でした。 そこで配列を宣言して両方にCOMMON文を書くとエラーが出ます。そこで配列宣言を消去するとエラーがなくなります。COMMON文を使うときは配列(変数)を宣言する必要はないのですか?(暗黙の型宣言は使わない場合を考えています。) またCOMMON文では変数の型宣言をするとエラーが出るし暗黙の型宣言に従って使うと変数には意味を付けて使っているので都合が悪いときもあります。 倍精度で変数を使いたい時とかにも困りますし。 COMMON文で自由な型で変数を使うにはどうしたらいいのでしょうか? 教えてください。お願いします。

  • エクセルを勉強中の者です。

    エクセルを勉強中の者です。以前使用していたBASICプログラムには配列という考え方があって、DIM namae(100,10,10)---等宣言して使っていましたが、エクセルにはこのような関数はないのでしょうか。 エクセル自体が2次元配列と考えることもできますが---。よろしくお願いします。

  • 動的配列と固定長配列の違いについて分からなくなってしまいました。

    動的配列と固定長配列の違いについて分からなくなってしまいました。 http://msdn.microsoft.com/ja-jp/library/cc343797.aspx 上のURLにあるmsdnの解説で Dim astr1() As String Dim astr2(0 To 9) As String astr1 = astr2 を引用した説明があり、重要事項として 「両方の配列が動的配列であり、いずれも同じデータ型として宣言されている必要があります。」 とありました。 astr1は動的配列なのは分かりますが、astr2は固定長配列だと思います。 「両方の配列が動的配列」とはどのように理解すべきなのでしょうか。

  • 配列方法とCall文とFor文について

    VB(A)について勉強中なのですが、わからない所があるので、簡単に教えていただけらたと思っています。 まず配列方法に関してですが、 Dim aaa() As Long という方法を見かけるのですが、調べてみると要素が不定と書いて有りました。 そこで、もし2次元配列、3次元配列で要素が不定の場合はどう書いたらよいのですか? もし、要素が確定しているなら Dim aaa(10,10) As Long Dim aaa(10,10,10) As Long とかけますよね。 次にCall文なのですが、 Call文はサブプロシージャを呼び出すための物と認識しています。 そこで、 Call BBB(...) とあれば Sub BBB(... As ○○○) と書いてある物を見ました。 ここで、(... As ○○○)とはどういう意味なのでしょうか? それと、Call文を使った場合は、戻り値などの設定は無いのでしょうか? つまり、Call文を使ったら一方通行にSubを呼び出すだけと言う物なのでしょうか? あと、For文に関してですが、 ある例題を見たら For Each ... In ××× と書いて有りましたが、どういう意味なのでしょうか? 色々書かせていただきましたが、分からない事だらけで困っています。 アドバイス宜しくお願いいたします。

  • 配列方法とCall文とFor文について

    VB(A)について勉強中なのですが、わからない所があるので、分かりやすく教えていただけらたと思っています。 まず配列方法に関してですが、 Dim aaa() As Long という方法を見かけるのですが、調べてみると要素が不定と書いて有りました。 そこで、もし2次元配列、3次元配列で要素が不定の場合はどう書いたらよいのですか? もし、要素が確定しているなら Dim aaa(10,10) As Long Dim aaa(10,10,10) As Long とかけますよね。 次にCall文なのですが、 Call文はサブプロシージャを呼び出すための物と認識しています。 そこで、 Call BBB(...) とあれば Sub BBB(... As ○○○) と書いてある物を見ました。 ここで、(... As ○○○)とはどういう意味なのでしょうか? それと、Call文を使った場合は、戻り値などの設定は無いのでしょうか? つまり、Call文を使ったら一方通行にSubを呼び出すだけと言う物なのでしょうか? あと、For文に関してですが、 ある例題を見たら For Each ... In ××× と書いて有りましたが、どういう意味なのでしょうか? 色々書かせていただきましたが、分からない事だらけで困っています。 アドバイス宜しくお願いいたします。

  • 拡張for文について質問

    以下は、拡張for文と配列に関するソースコードの一部を抜粋したものです。 それを見た上で、私の質問に答えてください。 int[]a={10,5,8,4,3}; for(int n:a){ System.out.print(n+" "); } int[][]a={{1,2},{4,5,6}}; for(int[]n:a){ for(int k:n){ System.out.print(k+" "); } System.out.println(""); } 質問1:何故、前者の配列は、『for(int n:a)』のように[]がついてなくても配列要素が取り出せるのに、後者の多次元配列は『for(int[]n:a){』のように『[]』がついた拡張for文を書いた上で、下にも拡張for文を書いた2重構造でないと配列要素を取り出せないのですか? 後者について『for(int n:a){』の文だけで多次元配列aの要素全て取り出せると思ってました。 因みに、配列変数には配列要素が入ってるのではなくて「参照」が入ってるのはわかってます。 このことと、何か関係があるのか、、?

    • ベストアンサー
    • Java
  • VisualBasic2008でWord2003を制御したいです。

    現在、VisualBasic2008でWord2003で作成した表を段落記号で区切って解除するプログラムを作成しています。Wordのマクロでもできるのですが、VisualBasic2008でもWordのマクロと同じようにWordドキュメントを制御できるのか、勉強したくて作成しています。 以下は一部を抜粋したものですが、「名前Selectionは宣言されていません」というエラーがでてしまいます。他の箇所でも「Selection」を使っている部分ではエラーがでます。 どなたかご存知の方対処方法を教えていただけないでしょうか。 なにぶん初心者なもので、わかりやすくご指導いただけると幸いです。 Dim wdDoc As Microsoft.Office.Interop.Word.Document For Each tbl In wdDoc.Tables '表を選択 tbl.Select() '段落記号で区切って表を解除する Selection.Rows.ConvertToText(Separator:=wdSeparateByParagraphs) Next