[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『エラ−がでたらexcelを終了させる方法』(りんご)
4.0マクロで、あるbookのセルを参照させ、今開いている シ−トのあるセルと数値の照合をさせ、=でなければ、 エラ−のダイアログがでますが、ここでキャンセルを押すと、 そのまま続けて処理されます。これをIF thenを使って excelを終了させる方法のマクロを組んでいるのですが、 うまくできません。こんなのはできないのでしょうか? どなたかわかる方教えてください。
下記の過去ログが参考になるかもしれません。合わせて、ヘルプやネットで 「On Error構文」を調べるとよいと思います。 (純丸)(o^-')b [[20021110183942]]『マクロでのOn Errorの基本的使い方について』(エータロー)
>4.0マクロで、 えっ!! 4.0マクロですか??「IF then」とあるからVBAだとは思いますが・・・。 (みやほりん)(-_∂)b
みやほりんさん わたしのやっていることは無茶ですか? どういうマクロか記述しますと
dim i as integer dim i as integer i=ここに4.0で別のbookのセルを記述 p=range("a1").select if i=p then range("a1").select end if if i<>p then thisworkbook.close false end if と書いています。 分らないままにこうだろうという思いつき でかいていますので! どうしたらいいか教えてください。 よろしく
ははぁ。4.0マクロ関数をVBA内で部分的に使用する、ということですね。 「4.0マクロで」が相談全体に対してと思ってびっくりしただけです。 次のコードはC:\TempというフォルダのBook1.xlsのSheet1、A1セルの値を変数iに 格納します。 Dim ObjXl As Object Set ObjXl = New Excel.Application i = ObjXl.ExecuteExcel4Macro("'C:\Temp\[Book1.xls]Sheet1'!R1C1") Set ObjXl = Nothing (みやほりん)(-_∂)b
ダイアログでキャンセルだったらブックを終了、っていうのが相談の主旨でしたね。 これを現在どのように処理されているのか、不明ですが、 MsgBoxの場合は次のような感じになるのではないでしょうか。 dim i as integer,p as Integer,Req As Integer Dim ObjXl As Object Set ObjXl = New Excel.Application i = ObjXl.ExecuteExcel4Macro("'C:\Temp\[Book1.xls]Sheet1'!R1C1") Set ObjXl = Nothing p = Range("a1").Value If i <> p Then Req = MsgBox("メッセージ", vbYesNoCancel) If Req = vbCancel Then thisworkbook.close false Exit Sub End If Range("A1").Select'以下にキャンセル時以外のコードを書く i,pが数字以外が代入される場合のことも想定した方が良いとは思いますが。 (みやほりん)(-_∂)b
ありゃ? On Error お呼びで無しでしたか。失礼しました。 (純丸)(o^-')b
みやほりんさん 親切にありがとうございます。 それでやってみます。 それと後一つ質問させて下さい。
次のコードはC:\TempというフォルダのBook1.xlsのSheet1、A1セルの値を変数iに 格納します。 上記の内容は自動的にこうなるんですか。Tempフォルダは一時的に保存するフォルダ だったと思いますが。 Dim ObjXl As Object Set ObjXl = New Excel.Application i = ObjXl.ExecuteExcel4Macro("'C:\Temp\[Book1.xls]Sheet1'!R1C1") Set ObjXl = Nothing
純丸さんのコメントもアウトプットして研究してみます。 というのもOn Error でもやっていたんですがうまくいかず if thenに切り替えたのです。 ありがとうございました。
>上記の内容は自動的にこうなるんですか。 なりません。「あるbookのセル」を自動的に探してくれるものではないですし、 マクロの記録で作成できるコードでもないのでこの部分は書き直してください。 「あるbookのセル」が私には見えていませんからサンプル作成上の仮定です。 りんごさんが参照したいのが C:\Temp に保存してある、Book1.xls という名前の ブックで、そのブックのSheet1のA1セル であると「仮定した場合は」サンプルのよう に書けますよ、という意味です。 「あるbookのセル」の実際のフォルダ名、ブック名、シート名、セルアドレスに それぞれ書き直してください。 あっ、セルアドレスはR1C1形式で書く必要はありますね。 R=Row (行) C=Column (列) の番号をそれぞれR、Cの後ろに書いてセル位置を表現します。 D3 セルなら 3行目の4列目だから R3C4 と書きます。 >Tempフォルダは一時的に保存するフォルダ >だったと思いますが。 そういう特殊な意味を持たせた使い方をする場合もあるでしょうね。 今回の場合はサンプルのために「一時的に作成した」フォルダなので、 そういうフォルダ名にしなさい、という意味ではありません。 (みやほりん)(-_∂)b
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.