• ベストアンサー

Publicで宣言しているのにエラーになった理由は

標準モジュールのModule1で Public i As Long と宣言しているのに、 Module2で i を使おうとしたら、 名前が適切ではありません:i と出るのですが、 ちゃんと変数の宣言をしているのになぜこのようなエラーが出るのでしょうか? しかも今まで問題なく使えていたのに、急にエラーになりました。

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

  • ベストアンサー
  • yubo
  • ベストアンサー率56% (66/117)
回答No.2

こんにちは Module1の1番上に「 Public i As Long 」と宣言した場合、プロジェクト内でどこでも有効になってしまいます。 Module1内でのみ有効にしたい場合、1番上に「 Dim i As Long 」となります。

aimghjxs2
質問者

お礼

ありがとうございました。

その他の回答 (2)

  • notnot
  • ベストアンサー率47% (4843/10252)
回答No.3

全く情報が無いので、どこか間違っているのでしょうと言うことしかいえません。

aimghjxs2
質問者

お礼

ありがとうございました。

回答No.1

チンだネェ、ありえヒン、、、 実際のコードが見えないのでダンテイは避けるが、 Module1の方では、キチンとModule1の外でPublic i As Longと宣言しているのに、 Module2の中でも変数iを宣言している??、とか、、、

aimghjxs2
質問者

お礼

ちん・・・? >Module2の中でも変数iを宣言している?? してないのですよぉ

関連するQ&A

  • VB2010で、変数の宣言がわかりません。

    VB2010で、変数の宣言がわかりません。 Option Explicit Public i, j, k, l As Long Public ii, jj, kk, ll As Long Public lngFileSuu As Long Public strTemp As String ・ ・ ・ と標準モジュールに宣言すると エラーがでています。 VB6.0とは宣言方法が違うのでしょうか? 教えてください。よろしくお願いします。

  • Excel にて変数の宣言の仕方

    Excel2002を使用しています。 標準モジュール内で下記のように変数を宣言すると Dim i,k as long (例)kには、あるセルの値を取得します。10000 Keta=len(k) この結果、ketaには、「4」という結果になります。 10000なので、「5」が返らないといけないのですが、うまくいきません。 ところが、 Dim i ,k ,m as long このように変数kの後ろに他の変数(今回はm)を記載すると、 「5」という結果が返ってきます。 変数の宣言の仕方が間違っているのでしょうか? よろしくお願いいたします。 ちなみに、 Dim k as long としても、「4」の結果が返ってきました。 同じ行に他の記載をしないとうまくいかないようです。。。

  • 実際に宣言した変数を使ってない場合

    vbaです。 標準モジュール内で Public str tmp As String 等で宣言しているのに、 実際に宣言した変数を使ってない場合があるのですが それを見つけ出すことはできますか? 宣言だけしていて使ってない変数が知りたいです。 ひとつずつ検索していくしかないのでしょうか?

  • 標準モジュール 変数の宣言 英語

    vbaの標準モジュールに、変数の宣言という名前を英語でつけたいのですが、 英語にすると、変数の宣言は何になりますか?

  • 「エラーの宣言」「エラーの定義」

    Sub Sample() Dim i As Long On Error GoTo test i = "a" test: i = 1 End Sub こういうのって、 On Error GoTo test の部分は「エラーの宣言」って言いますか? 「エラーの定義」でしょうか?

  • VBAでのグローバル宣言について

    (たとえばですが) 標準モジュールに『DataBase』を作成し、 Public TEST(10) as string TEST(0) = "hogehoge" と宣言し、 『Module1』にて Range("A1").Value = TEST(0) と記載して実行しようとすると 『コンパイルエラー:プロシージャの外では無効です。』 と表示されます。 ⇒解決方法はありますでしょうか。 【やりたいこと】 モジュールAにデータベース(String配列)を作成し、それをほかのモジュールから参照したいです。 データベース(String配列)は参照するのみで書き換えはしません。

  • 標準モジュールにpublicで宣言するしかない?

    フォームモジュールと標準モジュールで同じ変数を使って値を行き来したい場合、 標準モジュールにpublicで宣言するしかないのでしょうか? 【フォームモジュール】 Private Sub cmd_コマンド0_Click() test = "aaa" Call 標準モジュールtest End Sub 【標準モジュール】 Public test As String Sub 標準モジュールtest() MsgBox test End Sub でいいのですか?

  • VBの宣言について

    ACCESS VBAをはじめて使っています。FORMのコードを読んでいるのですが、宣言されていない変数を見つけました。それでプロジェクト内で宣言されているかどうか探したら、標準モジュールの中で宣言されていました。VBは同一プロジェクトの中でpublicで宣言していればimportとかincludeとか何か取り込む宣言をしなくても自動で変数を認識してくれるのでしょうか?

  • VBAで宣言セクションにクラスの宣言をしたい

    Excel VBAについての質問です。 ClassDataBaseというクラスモジュールを作成し、それをSheet1やThisWorkbookの宣言セクションで Public DB As New ClassDataBase というように宣言しようとしました。 ですが、これだと ---------------------------------------------------------- コンパイルエラー プライベートオブジェクトモジュールを、パブリックオブジェクトモジュール内で、パブリックプロシージャの引数または戻り値、パブリックデータメンバ、またはパブリックのユーザー定義型フィールドとして、使用することはできません。 ---------------------------------------------------------- というエラーが出てしまいます。 実は以前に質問し、教えていただいた際には標準モジュールで宣言するようにとのことだったのですが、他ではできないのかな?と思い、試したところこのような結果になってしまいました。 エラーの意味がわかればよかったのですが、ヘルプもなく、意味もわかりませんでした・・・。 どなたか、ご教授いただければ幸いです。 よろしくお願いいたします。

  • エクセル VBA 変数を一括で宣言したい

    こんにちは。VBAプログラム初心者です。 変数を宣言する際、 dim オーダ番号 as long, オーダ番号2 as long, …オーダ番号100 as long という内容を一括で宣言することは可能でしょうか? イメージ的には下のような感じなのですが。。。 dim i as integer for i = 1 to 100 dim オーダ番号i as long dim 単価i as long next マクロで便利にするつもりが余計面倒になっていて困っております。 解決策を教えていただけましたら幸いです。 何卒よろしくお願いいたします。

専門家に質問してみよう