• ベストアンサー

【Excel VBA】コマンドボタンの選択&移動

Excel2003を使用しています。 以前、こちらで教えていただいて、1クリックで1ページ分移動するコマンドボタンを作成しました。 左クリックでDown、右クリックでUpし、Sheet2モジュールに下記のコードを記述しています。 このコマンドボタン自体を選択して、現在配置している場所(セル上)から移動させたい場合、どのように操作すればいいでしょうか? 右クリック、左クリック両方にページ移動が設定されているため、コマンドボタン自体を選択することができません…。 マクロが動作しないよう、一旦、コードを削除して、ボタンをクリックしてみたのですが、選択状態になりませんでした。 よろしくお願いします。 ------------------------------------------------------- Private Sub CommandButton1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)  '左クリック-進む-Down  '右クリック-戻る-Up   CommandButton1.Caption = "左-Down, 右-Up"   Dim WinTop As Long   Dim i As Long   i = Int((ActiveCell.Row) / 26) + 1   If Button = 1 Then     Application.Goto Cells(i * 26 + 1, 1), True   ElseIf Button = 2 Then     If i > 1 Then       Application.Goto Cells((i - 2) * 26 + 1, 1), True     End If   End If    WinTop = ActiveWindow.VisibleRange.Top + 2 '(2は縦の位置調整)    CommandButton1.Top = WinTop End Sub

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

デザインモードに切り替えると 移動できます。 「表示」-「ツールバー」-「VisualBasic」 で開いたツールバーの中にデザインモードに するボタンがあります。

rx-z5815
質問者

お礼

アドバイスありがとうございます。 デザインモードに切り替えて、移動させることができました。 ありがとうございました!

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 >クリックイベントにも何か記述が必要ということなのでしょうか? もともと、そのコマンドボタンは、何をするためでしょうか? 単に動くだけではなくて、クリックして何をするか、ということですね。 移動するだけではないと思いますけれど……。 私の場合は、最下行にデータを貼り付けるようにしています。 ただ、移動の方法が、ボタンクリックではなくて、 Private Sub Worksheet_SelectionChange で動くようにしています。

rx-z5815
質問者

お礼

おはようございます。 お礼が遅くなり、申し訳ありません。 >もともと、そのコマンドボタンは、何をするためでしょうか? コマンドボタンをクリックすると1ページ分移動するというもので、教えていただいた動くボタンで、そのページ移動にコマンドボタンもついてきます。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 >デザインモードに切り替えて、移動させることができました。 そういうことでしたか。 コントロールツールやVBEのツールバーの「青い三角定規と鉛筆と定規」のアイコンをオンにすれば、デザインモードになりますから、移動や加工は可能になります。 そのコードの元は、私の書いたものだと思いますが、右クリックも、左クリックもあるけれども、Clickイベントとして、動かすマクロが生きていないのではありませんか? Private Sub CommandButton1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)  '左クリック-進む-Down  '右クリック-戻る-Up   CommandButton1.Caption = "左-Down, 右-Up"   Dim WinTop As Long   Dim i As Long    If Shift = 0 Then Exit Sub  '←ここに一行加える   ・   ・ Shift キーかControl キーを押さえながら、右クリック・左クリックで、動くようになります。 そうすれば、 Private Sub CommandButton1_Click() を使えます。

rx-z5815
質問者

お礼

Wendy02 さん、こんにちは。 お久しぶりです。 1年程前になりますが、Wendy02 さんから、この“動くボタン”を教えていただいて、大変便利に使わせていただいていましたが、最近、ボタンの位置を少し変えようかなと思い、試してみたところ、上記の質問のような状態で…というわけです。 どうしても移動させたいといけないわけでもなかったのですが、できないことが逆に気になって、質問させていただいた次第です。 >Clickイベントとして、動かすマクロが生きていないのではありませんか? 恥ずかしながら、ちょっと意味がわからなかったのですが、アドバイスをいただいたように、  If Shift = 0 Then Exit Sub ↑1行加えてみたところ、右クリック・左クリックしてもページ移動しなくなりました。 >そうすれば、 Private Sub CommandButton1_Click() を使えます。 とのことで、クリックイベントにも何か記述が必要ということなのでしょうか? もし、お時間が取れましたら、教えていただけると嬉しいです。

関連するQ&A