Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


11930 / 13645 ツリー ←次へ | 前へ→

【13232】Application.Callerにて 知ろう途 04/4/28(水) 15:09 質問[未読]
【13234】Re:Application.Callerにて Asaki 04/4/28(水) 15:16 回答[未読]
【13237】Re:Application.Callerにて 知ろう途 04/4/28(水) 15:35 質問[未読]
【13239】Re:Application.Callerにて Asaki 04/4/28(水) 15:39 回答[未読]
【13241】Re:Application.Callerにて 知ろう途 04/4/28(水) 15:59 回答[未読]
【13242】Re:Application.Callerにて Asaki 04/4/28(水) 16:08 回答[未読]
【13243】Re:Application.Callerにて Asaki 04/4/28(水) 16:10 回答[未読]
【13245】Re:Application.Callerにて 知ろう途 04/4/28(水) 16:18 回答[未読]
【13246】Re:Application.Callerにて Asaki 04/4/28(水) 16:27 発言[未読]
【13247】Re:Application.Callerにて 知ろう途 04/4/28(水) 16:35 回答[未読]
【13248】Re:Application.Callerにて Asaki 04/4/28(水) 16:54 発言[未読]
【13249】Re:Application.Callerにて 知ろう途 04/4/28(水) 17:08 お礼[未読]
【13244】Re:Application.Callerにて 知ろう途 04/4/28(水) 16:15 お礼[未読]

【13232】Application.Callerにて
質問  知ろう途  - 04/4/28(水) 15:09 -

引用なし
パスワード
   初めての投稿ですm(_ _)m 初心者です。。。
次のようなマクロをいくつかのオートシェイプ(額縁ボタン)に使い回しています。

Sub KM()
  Const A As Long = 50, ZU As String = "オートシェイプ "  
  Select Case Application.Caller
   Case ZU & A + 4: 転写 ("オートシェイプ 54": 処理1)
   Case ZU & A + 5: 印表 ("オートシェイプ 55": 処理2)
   Case ZU & A + 6: 印裏     :
   Case ZU & A + 13: 全削     :
         :          :
  End Select
End Sub

これをシンプルに。。。
Sub KM()
  Dim X AS Long  
  ???????????
  Select Case X
   Case 4: 転写 ("オートシェイプ 54": 処理1)
   Case 5: 印表 ("オートシェイプ 55": 処理2)
   Case 6: 印裏     :
   Case 13: 削全     :
      :        :
  End Select
End Sub
といった感じにしたいのですが、知恵が足りず困っています。
ご鞭撻のほどよろしくお願いします。
ちなみに、& A + 4 のよう回りくどくにしてるのは新規シートに同じオートシェイプを貼付けると、INDEXが変更される場合があるからです。

【13234】Re:Application.Callerにて
回答  Asaki  - 04/4/28(水) 15:16 -

引用なし
パスワード
   こんにちは。

試してませんが、
>Select Case X

Select Case Left(Application.Caller,9)
ではどうなりますか?

【13237】Re:Application.Callerにて
質問  知ろう途  - 04/4/28(水) 15:35 -

引用なし
パスワード
   Asakiさんどうもです。

>Select Case Left(Application.Caller,9)
>ではどうなりますか?
無理でした。
ちなみにLeftは文字列を調べるものですか?
,9)の数字の意味を教えてもらえますか?
図々しくてすみません。

【13239】Re:Application.Callerにて
回答  Asaki  - 04/4/28(水) 15:39 -

引用なし
パスワード
   >無理でした。
むり、とはどういう意味でしょうか?
エラーが出ましたか?
上手く動作しませんでしたか?

>Select Case Left(Application.Caller,9)
の前に、
MsgBox Left(Application.Caller,9)
を入れると、何が表示されますか?

>ちなみにLeftは文字列を調べるものですか?
>,9)の数字の意味を教えてもらえますか?
ヘルプをご覧ください。
VBAでも、一般の数式と同じ意味です。

【13241】Re:Application.Callerにて
回答  知ろう途  - 04/4/28(水) 15:59 -

引用なし
パスワード
   Asakiさん早い返事ありがとうございます。
>むり、とはどういう意味でしょうか?
エラーにはなりませんが、押しても処理1や処理2が実行されませんでした。

>MsgBox Left(Application.Caller,9)
>を入れると、何が表示されますか?
オートシェイプ 54,オートシェイプ 55・・・です。

【13242】Re:Application.Callerにて
回答  Asaki  - 04/4/28(水) 16:08 -

引用なし
パスワード
   ごめんなさい。
逆でした。
>Left(Application.Caller,9)

Replace(Application.Caller, Left(Application.Caller, 8), "")

ヘルプは見てくださいね。

【13243】Re:Application.Callerにて
回答  Asaki  - 04/4/28(水) 16:10 -

引用なし
パスワード
   っていうか、固定でも良いのでしょうか。
Select Case Replace(Application.Caller, "オートシェイプ5", "")

【13244】Re:Application.Callerにて
お礼  知ろう途  - 04/4/28(水) 16:15 -

引用なし
パスワード
   Asakiさん本当にありがとうございます。

ヘルプのファイルが今壊れてまして。。。
Right(Application.Caller,2)で出来ました!
本当に本当にありがとうございますm(_ _)m

これを式に変える問題をこれから考えます。。。

【13245】Re:Application.Callerにて
回答  知ろう途  - 04/4/28(水) 16:18 -

引用なし
パスワード
   Asakiさんありがとうございます。
>っていうか、固定でも良いのでしょうか。
>Select Case Replace(Application.Caller, "オートシェイプ5", "")
オートシェイプの数が3桁になるほど多いので多分無理ではないかと。。。

【13246】Re:Application.Callerにて
発言  Asaki  - 04/4/28(水) 16:27 -

引用なし
パスワード
   >オートシェイプの数が3桁になるほど多いので多分無理ではないかと
そうですか?
"オートシェイプ"という文字列の直後が 5 である限りは使えると思いますが。

それより、
>Right(Application.Caller,2)
桁が変わったら使えなくなりませんか?

【13247】Re:Application.Callerにて
回答  知ろう途  - 04/4/28(水) 16:35 -

引用なし
パスワード
   >そうですか?
>"オートシェイプ"という文字列の直後が 5 である限りは使えると思いますが。
言葉が少なくてすみません。
1**や2**があるんです。

>>Right(Application.Caller,2)
>桁が変わったら使えなくなりませんか?
全くもってその通りですm(_ _)m
,3)にしたらいけました。

【13248】Re:Application.Callerにて
発言  Asaki  - 04/4/28(水) 16:54 -

引用なし
パスワード
   >,3)にしたらいけました。
それだと今度は、2桁のときにまずいのでは?
"オートシェイプ" という文字列を外した、数値部分のみで判定させるようにするのが一番よさそうに思いますが。

【13249】Re:Application.Callerにて
お礼  知ろう途  - 04/4/28(水) 17:08 -

引用なし
パスワード
   Asakiさん度々ありがとうございます。

>それだと今度は、2桁のときにまずいのでは?
偶然右から3桁目は空白になるので、2桁でも下記で大丈夫みたいです。
Sub KM()
  
  Select Case Right(Application.Caller, 3) - 50
   Case 4: 転写 
   Case 5: 印表
   Case 6: 印裏
   Case 13: 削全
      : 
  End Select

End Sub

11930 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free