[[20090718204859]] 『VBAがうまく起動しません』(PAT) ページの最後に飛ぶ

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

 

『VBAがうまく起動しません』(PAT)

A1〜A3のどこかのセルに入力されていたら、それぞれに定めたマクロが起動する様にしたく調べていたら下記のような例をみつけました。

 しかしながら、実行すると、
実行時エラー'13':
型が一致しませんと出てしまいます。

なんとか成功させたいのですが原因わかりませんか?

行動0〜行動3(単体で起動すると動きます)のマクロには入力済みです。
(内容はコピー&ペーストです)

Sub マクロ実行()

Dim R As Range

Set R = Range("A1:A3").Find("*")

If R Is Nothing Then

Call 行動0 'マクロ名

Else

Select Case R.Row

Case "A1"

Call 行動1 'マクロ名

Case "A21"

Call 行動2 'マクロ名

Case "A3"

Call 行動3 'マクロ名

End Select

End If

End Sub


 こんにちは。かみちゃん です。

 > 実行すると、実行時エラー'13': 型が一致しませんと出てしまいます。 

 提示されたマクロだけではそのような事象にはならないように思います。
 以下のマクロを試してみてください。

 Sub Test()
   Dim R As Range

   Set R = Range("A1:A3").Find("*")

   If R Is Nothing Then
     MsgBox "セルが見つかりません"
 '    Call 行動0  'マクロ名
   Else
     MsgBox "セルが見つかりました"
 '    Select Case R.Row
 '      Case "A1"
 '        Call 行動1  'マクロ名
 '      Case "A21"
 '        Call 行動2  'マクロ名
 '      Case "A3"
 '        Call 行動3  'マクロ名
 '      Case Else
 '        MsgBox "マクロは実行しません"
 '    End Select
   End If
 End Sub

 > 行動0〜行動3(単体で起動すると動きます)のマクロには入力済みです。(内容はコピー&ペーストです)

 この中のコードでエラーになっているのではないでしょうか?

 あと、
 Select Case R.Row
 で処理分岐していますが、R.Rowの戻り値は、行番号ですから、1、2、3のいずれかだと思いますので、
 Case "A1"、Case "A2"、Case "A3" のいずれにも一致しないと思います。

 (かみちゃん)
 2009/07/18 21:04


 >Select Case R.Row
                ~~~~
 行番号で場合を分けるのに
 Case "A1" 
 Case "A21" 
 Case "A3" 
 っておかしくないです?

 セル番地を確認するなら Address(0,0)でしょうし
 行番号で決行するなら、1,2,3・・・ですよね?

 (HANA)

かみちゃん さん、HANAさん
 
ありがとうございます。 
ご指摘どおり
Case1
Case2
Case3
で動きました。

ちょっとずつVBAがわかってき、今、勉強するのが面白いところです。
この壁に当たって危うくいやになる可能性があったので感謝してます。

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

(PAT)


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.