• ベストアンサー

エクセルVBAで変数初期値を入れる場所

早速ですが Moduleに Dim ct As Integer  Workbook Open に ct=0 Shet1 Calculete で IF 文で 値がない エラーが出ます。 エクセルって どこに初期値を書くのでしょ? VB6なら Form Load で 事足りるのですが

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

  • ベストアンサー
  • NURU_osan
  • ベストアンサー率50% (297/593)
回答No.2

 補足を受けて再回答します。  Publicでの変数宣言はModuleの一番先頭にでも書き込んでください。 Public ct As Integer

007itochan
質問者

お礼

ありがとうございます 通りました。とりいそぎ

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • NURU_osan
  • ベストアンサー率50% (297/593)
回答No.1

 変数宣言をModuleでやっているのなら、その変数はModuleでしか使えません。  Workbook_Openで使いたいのならWorkbook_Openの中で変数を宣言する必要があります。  一つの変数をワークシートやワークブック、モジュールをまたいで共通で使いたいのなら、Dimで宣言するのではなくPublicで宣言してください。

007itochan
質問者

補足

ありがとうございます。 で、Public は どこに書けばいいのでしょ? どこでもいい? すいません VB6の知識しかなく まだ、参考書も買ってない状態で・・

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 「エクセルファイルが開いていたら開かない」としたい

    「エクセルファイルが開いていたら開かない」としたいです。 VB2010です。 -------------------------------------------------------------- Imports Microsoft.Office.Interop '参照設定済み Module Module1 Sub ExcelOpen() Dim ExcApp As Excel.Application Dim book As Excel.Workbook Dim MyPath As String MyPath = "C:" ExcApp = CreateObject("Excel.Application") ExcApp.Visible = True book = ExcApp.Workbooks.Open(MyPath & "\test.xlsm") End Sub End Module -------------------------------------------------------------- で、ファイルを開くのですが、既にファイルが開いている場合は、2個開いてしまい、 最後に開いたファイルが読み取り専用になってしまいます。 IFで、開いているかどうかを取得して、 開いているのなら「既に開いています」として、ExitSubがしたいです。 ご協力よろしくお願いします。

  • EXCELのセルの値を表示する

    VB6.0を使っています。 エクセルのC5のセルに50という値が入っています。 この値をVBのメッセージボックスで見たいのですが 実行して見てみると 「50」ではなく何故か「0」と表示されてしまいます。 どうしてでしょうか? その部分のコードは下です。 Dim Wb As Excel.Workbook Dim Ws As Excel.Worksheet Dim Ea As Excel.Application Dim atai As Integer Set Wb = GetObject("C:\test\test.xls") Set Ea = Wb.Application Set Ws = Wb.Worksheets("Sheet1") atai = Ws.Cells(3, 5) MsgBox (atai)

  • VBAの初期化について

    VBAの初期化について 変数Xに100という値を初期値として代入したいのですが。 Option Explicit Dim X As Integer X =100 と書くとコンパイルエラーになります。 C言語では int X=100 と初期化できますが、 VBAではどのようにすればいいのでしょうか?

  • EXCEL VBA VLOOKUP 範囲を変数で

    Excel VBA で VLookup()の第2引数の範囲を行と列の数値の変数で指定したいのすが どのように記述すればよいでしょうか。 以下の式がエラーにならないように具体的に直していただけないでしょうか。 よろしくお願いします。 ----------------------------------- Dim d1 As String Dim d2 As String Dim r1 As Integer Dim r2 As Integer Dim c1 As Integer Dim c2 As Integer Dim c3 As Integer d1 = "愛知" r1 = 2 r2 = 782 c1 = 3 c2 = 5 c3 = 4 d2 = VLookup(d1, Worksheets("Sheet1").Range(Cells(r1, c1), Cells(r2, c2)), c3, False)

  • VBA Public変数の値が初期化されません

     質問させていただきます。どうぞよろしくお願いいたします。    環境:Win7 SP1 64Bit     エクセル2010 SP2 32bit でございます。 【現象】  下記のコードを実行後、再実行するとなぜか最初からB_Num = 3 になっております。 VBAの場合は明示的に初期値を入れないでも自動で初期化されるものと思っておりましたが、 「プログラム再実行時に確実に変数が初期化されている」ようにする事は可能でしょうか?       Public B_Num As Integer Sub test() If B_Num > 0 Then Stop For iii = 1 To 3 B_Num = B_Num + 1 Next End Sub 【検証内容】  ・ コード実行 →(End Subまで行って終了)   →再実行   →3が残っている。     ・ コード実行 →(End Subまで行って終了)   →終了している状態で、無意味そうですが、エディタの「リセット」ボタン(四角形)を押す。   →再実行   →何故か値が0に初期化される。     ・上記「リセット」ボタンの代わりに「デザインモード」ボタンを押す。   →同じく値が0に初期化される。     ・ThisWorkBook内、Module1内、どちらに記述しても同じ現象になる。      検索しておりましても「Public変数の値が消えてしまう」という記事はいくつかありましたが 「消えずに残っている」というものを見つけることができませんでした。 (「C言語の場合は初期値が不安定なことがあるので明示的に初期化しないといけない」という記事はありましたが。。。)  どうぞよろしくお願いいたします。

  • VBA エクセル 合計

    皆様、こんにちは。 それぞれの値が入っている会計シート(シートの形式は同じ)を一つの合計シートに合計しようとしていますが、うまくいきません。具体的に、数値の合計ができません。 例えば、ある項目に対して、シートAに100が入力され、シートBには230が入力されているとすれば、合計シートに100+230=330を入力したいです。なお、全ての会計シートは"Form"というエクセルシートにあり、その数をユーザが決めますので、検索しなければいけません。そして、合計シートは"Result"にあります。 以下のように書いてみましたが、間違っているようです。 Worksheets("Result").Activate Dim SR As Integer Dim SC As Integer 'SR is start row 'SC is start column SR = 6 SC = 2 Worksheets("Form").Activate Dim i As Integer i = 68 Do While 1 = 1 If Selection.Cells(i, 4).Value = "" Then Exit Do End If i = i + 49 Loop Sum = 0 Sum = Sum + Selection.Cells(i, 4) Worksheets("Result").Activate Cells(SR + 5, SC + 2) = Sum 詳しい方に教えていただければ非常に助かります。 どうぞよろしくお願いします。

  • VBAの変数をエクセルで表示

    VBAで Dim num as Integer num = 1 のプログラムがあるとします。 このnumの変数をエクセルのセルで表示させたいのですが可能でしょうか? (例) セル(A,1)に変数numの値を表示させたいのですが、 数式バーに =num と入力してもうまく表示されません。 無理なのでしょうか?

  • 変数

    Dim トータル As Integer トータル = 200 Dim 変数1(トータル) As Integer Dim 変数2(トータル) As Integer Dim 変数3(トータル) As Integer Dim 変数4(トータル) As Integer ※変数1~4に同じ数の変数(クローン??)を用意したいのですがエラーがでます。 このような使い方は出来ないのでしょうか? なお、VB上ではローマ字で使っています。 変数は6個ぐらいあり 毎回変えるのは面倒なので・・・ (スパイラルモデル方式??といっても使うのは私自信ですが・・・)

  • Excelのセルの値を取得

    VB2005Expressにて開発しています。 Excelのセルの値を取得するにはどうしたらいいのでしょうか。 下記でExcelは起動出来るのですが、値の取得ができません。 また、Rangeで範囲を指定して一括取得して、1データずつ配列化した 変数にセットすることは可能なのでしょうか。 Dim xlApp As New Excel.Application Dim xlBooks As Excel.Workbooks = xlApp.Workbooks Dim xlFilePath As String = "C:\excel_test.xls" Dim xlBook As Excel.Workbook = xlBooks.Open(xlFilePath) Dim xlSheets As Excel.Sheets = xlBook.Worksheets Dim xlSheet As Excel.Worksheet = xlSheets.Item(1) xlApp.Visible = True どなたかご存知の方がいらっしゃいましたら教えて下さい。 よろしくお願いします。

  • EXCEL VBAで変数を使ってファイルを開きたいのですが。

    いつもお世話になります。Win98-EXCEL2000での作業です。 いくつかのファイルで同じ処理をしたいので、変数を使ってファイルを開くことができたらいいなと思って、こんな感じがいいなと作ってみたのですが、 Dim iii As Integer Dim myF As String For iii = 1 To 5 If iii = 1 Then myF = "偏貼_log" ElseIf iii = 2 Then myF = "Cof_log" ・・・と、5つのファイル名を入れて、 Workbooks.Open Filename:="myF.xls" としたいのですが、当然ここで変数が入っても「myF.xls」というファイルを探しに行ってしまいますよね・・・ こういう場合はどうすればよいのでしょうか。 宜しくお願いします。