[[20061201131627]] 『エラ−がでたらexcelを終了させる方法』(りんご) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『エラ−がでたら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.