| 
    
     |  | ▼ponpon さん、こんばんは。 
 >私も作ったのですが、
 >一つならうまくいくのですが・・・
 >>  Dim shpnm As String
 >>  shpnm = Application.Caller
 >
 >ここの意味を教えてください。ichinose さん お願いします。
 HelpのCallerプロパティに説明があると思いますが、
 マクロの対象となるオブジェクトの識別名が取得できます。
 これは、呼び出し元によって内容が変わりますから、最初によく確認してみて下さい。
 
 この例だと
 msgbox application.caller
 
 なんてコードで確認するとわかると思います。
 私は、ユーザー定義関数を作成する時に使用た経験があります。
 但し、そのときは、Application.Callerで取得する内容も違っていますが・・・。
 
 標準モジュールに
 '===============================================
 Function mysheet()
 dim rng as range
 Set rng = Application.Caller
 mysheet = rng.Parent.Name
 End Function
 
 として、
 どこかのセルに
 
 「=mysheet()」
 
 と指定してみてください。
 シート名が表示されます。
 コードを見るとわかるかと思いますが、
 application.callerでRangeオブジェクトを取得しています。
 
 呼び出し方法によって返されるデータの種類も違うでしょう?
 うまく使えばいままで出来なかった事が可能になるかもしれませんよ!!
 
 
 >
 >Sub test()
 >
 >   With ActiveSheet.Shapes(1).Fill
 >   If .ForeColor.SchemeColor = 10 Then
 >     .ForeColor.SchemeColor = 9
 >   Else
 >     .ForeColor.SchemeColor = 10
 >   End If
 >  End With
 >End Sub
 
 
 |  |