|    | 
     コードの順序が違います。"冒頭に"と書いたはずです。だから・・ 
 
  Dim MyR As Range 
  Dim x As Variant ・・・・追加 
 
  x = Application.Caller         ・・・追加 
  If VarType(x) <> 8 Then Exit Sub    ・・・追加 
  If MyBt <> x Then MyBt = x       ・・・追加 
  On Error GoTo ELine 
  Set MyR = Range("x:y").SpecialCells(3, 2).EntireRow  
  On Error GoTo 0 
  MyR.Hidden = IIf(MyR.Hidden, False, True) 
  Set MyR = Nothing 
ELine: 
 
と、修正して下さい。 
>Public MyBt As String  とはどこに入れれば 
ツールバーのボタンを使っているなら、そこへ登録しているマクロは 
全て標準モジュールに書いているはずです。そのモジュールの一番上 
(即ち(General) と太字で表示されている組み込みのコンボボックスに 
最も近い場所、という意味です。)に書き込むのです。APIの使用宣言文 
とか、グローバル変数を書く位置は、そのように決められています。 
 
 | 
     
    
   |