dポイントプレゼントキャンペーン実施中!

AI セルにコマンドボタンを置いて、下記のマクロを割り当てています。
プロパティで [ セルに合わせて移動やサイズを変更しない ] を選択しているのですが、マクロによるソート後、AI セルから列方向に移動してしまいます。

ソート後も AI セル から移動しないようにするためにはどのようにすれば良いでしょうか?

' Macro3 Macro
'

ActiveSheet.Unprotect
Cells.Select
ActiveWorkbook.Worksheets("語彙").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("語彙").Sort.SortFields.Add Key:=Range(Range("A1"), Cells(1, Columns().Count).End(xlToLeft)), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("語彙").Sort
.SetRange Range("A1").CurrentRegion
.Header = xlGuess
.MatchCase = False
.Orientation = xlLeftToRight
.SortMethod = xlPinYin
.Apply
End With
ActiveSheet.Protect

A 回答 (3件)

> Private Sub ボタン3_Click() としたのですが、


> ボタン名をマクロが認識しなくなりました。

???  状況が分からなかったです。 過去の質問をみたら、
https://oshiete.goo.ne.jp/qa/12779188.html
《これをボタンに割り当てたいと思うのですが、》
Sub Macro3()
  :
  :
  :
end Sub
との記載がありました。
《AI セルにコマンドボタンを置いて、下記のマクロを割り当てています。》
これを、私が読み間違えて、ActiveXコントロールのことかと思ってしまったのです。
https://allabout.co.jp/gm/gc/297821/
「フォーム」ツールバーの「ボタン」であれば、
「Private Sub CommandButton1_Click()」でも
「Private Sub CommandButton3_Click()」でもダメです。

標準モジュールにマクロを記載します。 
その際、「Sub ボタン3_Click()」にして下さい。
「Private Sub ボタン3_Click()」ではだめです。
次に、シート上に、「⇒挿入 ⇒図形」でボタンを作って、図形を右クリックして、「マクロの登録」で、「ボタン3_Click」を選択して下さい。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

Activexコントロールのボタンに替えてみたら上手くいきました!
#1のコード使わせていただきます。
お手数かけました。
またよろしくお願いします。

お礼日時:2022/01/29 18:14

こんにちは



対処法としては、
 1)実行後、ボタンの位置をA1の位置に戻す
  (既回答にある方法)
 2)1行目(または1列目)をソートの対象から外すレイアウトにする

以下はトリガーを変える方法ですが・・
 3)ボタンではなくエクセルのリボンのメニューから実行
 4)ボタンではなくショートカットキーで実行
 5)ボタンではなくコンテキストメニューから実行

などが考えられると思います。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

色々とたいへん参考になりました。
またよろしくお願いします。

お礼日時:2022/01/29 18:12

Private Sub CommandButton1_Click()



ActiveSheet.Unprotect
bbh = ActiveSheet.Shapes.Range(Array("CommandButton1")).Left
' この「bbh」は、最後に使う。
Cells.Select
ActiveWorkbook.Worksheets("語彙").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("語彙").Sort.SortFields.Add Key:=Range(Range("A1"), Cells(1, Columns().Count).End(xlToLeft)), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("語彙").Sort
.SetRange Range("A1").CurrentRegion
.Header = xlGuess
.MatchCase = False
.Orientation = xlLeftToRight
.SortMethod = xlPinYin
.Apply
End With

ActiveSheet.Shapes.Range(Array("CommandButton1")).Left = bbh
' ここで、コマンドボタンの位置を当初に戻す
ActiveSheet.Protect

End Sub
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

Private Sub ボタン3_Click()

としたのですが、ボタン名をマクロが認識しなくなりました。

お礼日時:2022/01/28 23:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!