- 締切済み
windows7上でVBAマクロがエラー
仕事で使っているエクセル97で作ったVBAマクロがありますが、winXPからwin7に乗り換えたらエラーがでるようになりました。 コマンドボタン押下によるマクロで、変数フラグに「xxxx=1」という記述でコンパイルエラーが起こり、実行がストップします。 自動処理だけを目的に作っており、定石を踏んだマクロになっておらず、このxxxxにもディメンションで変数型を指定しておらず(こちらにおられる諸兄には怒られそうですが)、 Private Sub CommandButton1_Click() Application.ScreenUpdating = False xxxx = 1 : というソースの中で、開始直後にxxxx=1にフォーカスがあたり、コンパイルエラーになります。 winXPまでは問題なく動作していたマクロです。(Vistaでは試すチャンスがありませんでした) 解決方法はあるのでしょうか。それとも変数にDim定義を追加する修正をソースへいれないとだめでしょうか。 ご存知の方、ご指導ください。
- kyousiro666
- お礼率0% (0/2)
- オフィス系ソフト
- 回答数2
- ありがとう数0
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17068)
XXXXはどういう変数ですか(変数名)? エラーコードはなんと出ますか? VBAで、デバッグ・VBAProjecのコンパイルの方をしているのですか。実行ーSubユーザーフォームの実行の方ではどうなりますか。
- kybo
- ベストアンサー率53% (349/647)
「変数を定義されていません」というエラーではないでしょうか? そうであれば、変数を定義するか、シートモジュールの先頭にある「Option Explicit」を消してください。 あと、ツール→オプション→変数の宣言を強制するにチェック入っていると自動で「Option Explicit」が入るのでチェックを外しておきます。
関連するQ&A
- 同じマクロ名でも、違うモジュールならエラーにならな
同じマクロ名でも、違うモジュールならエラーにならない? エクセルVBAについてご教授ください。 標準モジュールに ――――――――― Option Explicit Sub CommandButton1_Click() MsgBox "" End Sub Sub CommandButton1_Click() MsgBox "" End Sub ――――――――― と同じマクロ名を2つ作ったら、コンパイルエラーになりますが、 上記のコードは一度消して、フォームモジュールに ――――――――― Private Sub CommandButton1_Click() MsgBox "" End Sub ――――――――― を一つ作り、 標準モジュールに ――――――――― Sub CommandButton1_Click() MsgBox "" End Sub ――――――――― を一つ作った場合は、エラーにならずにマクロを実行できました。 これは、フォームモジュールがPrivate Subだからでしょうか? フォームモジュールに1つ、 標準モジュールに1つ なら同じマクロ名を使っても、エラーにならないという事でしょうか? よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- VBAで印刷するとエラーになってしまいます。
VBAで印刷するとエラーになってしまいます。 EXCELシートをボタンの押下で印刷するマクロを組んだのですが、 実行すると必ずエラーになってEXCEL自体が落ちてしまいます。 添付画面を参照して下さい。 普通にEXCELの印刷([ファイル]->[印刷])から印刷すると問題なく印刷できます。 何か足りないものがあるのでしょうか? どなたか教えてください 以下ソース ---- Private Sub btn_Print_Click() 'ActiveSheet.PageSetup.CenterHeader = "&B&12印刷" ActiveWorkbook.Worksheets(1).PrintOut End Sub ----
- ベストアンサー
- オフィス系ソフト
- excel vba です
シートにActiveXコントロールでボタンを作りました そのボタン押下時、 標準モージュールにあるソースを直接呼出したいのですが、 ボタンとそのモジュールの割り当て方がわかりません 教えてください (1) sheet1 に CommandButton1 というボタンがあります (2) 標準モージュールにある、 Sub test() というモジュールを直接呼び出したい 普通にやると、Sheet1 に Private Sub CommandButton1_Click() というモジュールができてしまいます そこから、Sub test() をcall するのではなく、直接呼び出したいのです 教えてください、宜しくお願いします
- 締切済み
- Visual Basic
- コマンドボタンでマクロを起動するとエラーになる
以下のようなコードをツールバーのマクロから起動するようにするとできるのですがコマンドボタンから起動するようにするとエラーになります。なぜでしょうか? Private Sub CommandButton1_Click() Application.ScreenUpdating = False Workbooks.Open "C:\My Documents\b.xls" Windows("b.xls").Activate Columns("A:C").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _ Workbooks("a.xls").Sheets("Sheet2").Range"A1:A3"), CopyToRange:=Columns("E:G"), Unique:=True ~ここでエラー'1004'~ Windows("a.xls").Activate Workbooks("C:\My Documents\b.xls").Close Application.ScreenUpdating = True End Sub
- ベストアンサー
- オフィス系ソフト
- マクロ ユーザーフォームが表示されない
いつも回答して頂き、ありがとうございます。 Sub UserForm1() UserForm1.Show End Sub と記述しましたが、エラーが発生し、ユーザーフォームが表示してくれません。 コンパイルエラー:Functionまたは変数が必要です フォームはコマンドボタンを一つ配置し、 Private Sub CommandButton1_Click() Unload UserForm1 End Sub と記述してあるだけです。何が悪いのでしょうか?御教授の程宜しくお願い致します。
- ベストアンサー
- オフィス系ソフト
- VBAのこの実行時エラーは何故起きる?
ExcelVBAで次の大変簡単なコードを書いてみました。 シート上の行列(100*100)の範囲にランダムに☆印を100個表示するというものです。sheet1にコマンドボタンを貼り付け押すと実行します。ところが実行時エラーが起きて止まります。(メッセージ:”アプリケーション定義またはオブジェクト定義のエラーです”)原因はなんでしょうか?6行目が問題なようです。うまく動く時もあるので不思議です。 Private Sub CommandButton1_Click() Application.ScreenUpdating = False For n = 1 To 100 R = Int(Rnd * 100) C = Int(Rnd * 100) Sheet1.Cells(R, C).Value = "☆" Next Application.ScreenUpdating = True End Sub
- ベストアンサー
- Visual Basic
- VBAのCallステートメントについて
ExcelのSheet1にCommandButton1(表示)があります。 -------------------------------------------------- Private Sub 表示_Click() (DBより表示処理) End Sub -------------------------------------------------- UserForm1にCommandButton1(登録)があります。 -------------------------------------------------- Private Sub 登録_Click() (DBへの登録処理) UserForm1.Hide Call WorkSheets("Sheet1").表示_Click() ・・・☆ Exit Sub End Sub -------------------------------------------------- 表記のようなプログラムにしたところ、☆印のところで、 下記エラーが表示されてしまいます。 【エラー】--------------------------------------------------- 実行時エラー'91': オブジェクト変数またはWithブロック変数が設定されていません。 ------------------------------------------------------------- どのようにしたらCallステートメントで表示_Clickを呼び出すことが できるのでしょうか。
- ベストアンサー
- Visual Basic
- エクセルでマクロを実行するとコンパイルエラー
エクセルでVBエディタでソースコードを記述し、マクロを実行すると、コンパイルエラー、「SubまたはFunctionが定義されていません」とエラーが出ます。これはどういうエラーですか?何が間違っているのですか?
- ベストアンサー
- オフィス系ソフト
- EXCEL VBAのユーザーフォームに引数を渡す方法について
すいません、EXCEL VBAのユーザーフォームに引数を渡す方法についてご質問があります。 シート上にコマンドボタンを2つ用意する。 コマンドボタン1を押すと変数mは1 コマンドボタン2を押すと変数mは2 としてユーザーフォームを呼び出す。 Public m As Integer Private Sub CommandButton1_Click() m = 1 Call フォーム呼び出し(m) End Sub Private Sub CommandButton2_Click() m = 2 Call フォーム呼び出し(m) End Sub Sub フォーム呼び出し(m As Integer) UserForm1.Show End Sub 次にユーザフォームにコマンドボタンを1個置き、 ボタンを押したとき、mが1であれば「ボタン1」 mが2であれば「ボタン2」 とメッセージボックスを出し、ユーザーフォームを閉じる。 Private Sub CommandButton1_Click() If m = 1 Then MsgBox "ボタン2" ElseIf m = 2 Then MsgBox "ボタン2" End If Unload UserForm1 End Sub プロシージャ間の引数渡しは色々なテキストに載っているのですが ユーザーフォームに引数を渡す方法はどうも見つからず、 Private Sub CommandButton1_Click(m) としても、コンパイルエラーとなってしまいます。 よろしくご教示をお願いいたします。
- ベストアンサー
- オフィス系ソフト
- EXCEL2003 VBAで動作が速くなるようにマクロ記述したいのです
EXCEL2003 VBAで動作が速くなるようにマクロ記述したいのですが、どのように行えばいいのでしょうか? Sheet1のA1からA300まで、関数によって計算されたデータが格納されています。 そのA1からA300の値(関数の計算結果のみ)を、コマンドボタンをクリックした時にSheet2のA1からA300にコピーしています。 コマンドボタンをクリックする度に、Sheet1のA1からA300までの値を、Sheet2に列を変えてコピーし、値を蓄積する方法を取っています。 以下のマクロを記述して走らせてみましたが、動作が遅いのが気になります。 コピーして貼り付けている動作が遅くなっているのでしょうか? もう少し早くなる方法はありますでしょうか? よろしくお願いします。 Sub CommandButton1_Click1() Dim I Dim N Worksheets("sheet1").Range("F1").Value = Range("F1").Value + 1 N = Worksheets("sheet1").Range("F1").Value For I = 1 To 300 Application.ScreenUpdating = False Worksheets("sheet1").Cells(I, 1).Copy Worksheets("sheet2").Cells(I, N).PasteSpecial Paste:=xlValues Application.ScreenUpdating = True Next End Sub
- ベストアンサー
- その他MS Office製品