
No.4ベストアンサー
- 回答日時:
コードをみてどのようにしたいのか分かりました。
これは、並べ替えしたい列にマウスカーソルを置いて、
マクロ(ボタンで良い)を実行してみてください。
'//
Sub SortProgram1A()
Dim num As Integer
num = ActiveCell.Column
If ActiveSheet.AutoFilterMode = False Then
MsgBox "オートフィルターがありません。", vbCritical
Exit Sub
End If
With ActiveSheet.AutoFilter.Range
If num > .Columns.Count Then Exit Sub
.Sort Key1:=.Cells(1, num), _
Order1:=xlAscending, _
Header:=xlYes
End With
End Sub
'//
'ActiveSheet.AutoFilterMode は、AutoFilter が設置させていないと実行に移さないようにしています。
'ActiveSheet.AutoFilter.Range これは、オートフィルター上の範囲の意味です。
.Cells(1, num), これは、任意の列のオートフィルターの範囲のヘッダー位置を示しています。
---------参考コード--------------------------
シフトキーを押したまま実行すると、降順になります。
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Private Const VK_SHIFT = &H10 'この上2つは、モジュールのてっぺんに置く
Sub SortProgram1Ar()
Dim num As Integer
Dim ad As Integer
num = ActiveCell.Column
If ActiveSheet.AutoFilterMode = False Then
MsgBox "オートフィルターがありません。", vbCritical
Exit Sub
End If
If GetKeyState(VK_SHIFT) < 0 Then
ad = xlDescending 'シフトキーを押したら、降順に変わる
Else
ad = xlAscending
End If
With ActiveSheet.AutoFilter.Range
If num > .Columns.Count Then Exit Sub
.Sort Key1:=.Cells(1, num), _
Order1:=ad, _
Header:=xlYes
End With
End Sub
回答有難う御座います。
選択したセルの項目の並べ替え出来るようになりました。
みんなに使ってもらう為降順のボタンも作ろうと思います。
No.3
- 回答日時:
>並べ替えが簡単に出来ないようですので選択したセル列の昇順と降順ボタンを作ってマクロを割り当てるのがいいのでしょうか。
私には、それしか思いつかなかったのです。
逆に、他に何か思いつくことはありませんか?例えば、右クリックメニューに入れるとか。
わざわざ、セルのロック自体を外すよりは良いかと思います。
私自身は、それをどのぐらい、見栄えがよく作れるか、ということを考えてしまいます。
それで、非常に小さいボタン(セルの半分ぐらい)は、フォームコントロール側のほうがよいようです。ActiveX コントールですと、1つのボタンでいろいろ違った動きを示すことが出来ますが、小さい場所に納まりません。
フォームコントロールのボタンひとつで、コントロールキーを押したままとかで、別のマクロを実行できる方法もあります。ただ、ちょっと難しい内容になってしまいます。
回答有難う御座います。
範囲をCurrentRegionとしアクティブセルを基準に並べ替えをしようと思い以下のように書いてみましたがうまく動きませんでした?
Sub 並べ替え()
Dim c As Range
Set c = ActiveCell
Debug.Print (c.Value)
Range("A5").CurrentRegion.Sort 'A5を基に範囲選択ですがA5が文字化けしています'
Key1:=c, _
Order1:=xlAscending, _
Header:=xlYes
End Sub
No.2
- 回答日時:
こんばんは。
>こちらはチェックしていません」こちらまで入れてしまっていました。
たいへん失礼しました。
ところで、昇順降順の並び替えは別ですね。こちらも気が付かなかったのですが、あくまでも、オートフィルターだけでした。
以下のように、Protectに、
AllowSorting:=True を加えてあげればよいようですが、それではダメなのです。
ここで、オートフィルター範囲のロックを解除してあげないといけないのです。
Range("A1:E11").Locked =False '←例えばの範囲ですが、これが必要になってしまうのです。
ActiveSheet.EnableAutoFilter = True
ActiveSheet.Protect Password:="", _
AllowDeletingRows:=True, _
AllowSorting:=True, _
userInterfaceOnly:=True
これで良ければ、お終いですが、
ちょっと、ロックを外したら意味がありません、となるのではないかと思います。
いっそ、 AllowSorting:=True, _ をやめて、
マクロで処理してしまったほうがよいかもしれませんね。
マクロなら、userInterfaceOnlyで、うごかせます。
内容は以下のような簡単な対話形式ですが。(もっとさり気なくできればよいのですが、もしくは、ヘッダーの部分のロックを外して、そこにイベントを設ける方法もありますね。)考えていくと思った以上に難しいです。
Sub Button_Click1()
Dim num As Integer
num = Application.InputBox("何列目を並べ替えますか?")
If num <= 0 Then Exit Sub 'キャンセルボタンでも、0になります。
With Range("A1").CurrentRegion
If num > .Columns.Count Then Exit Sub '範囲の列数を越えたら、マクロの離脱
.Sort Key1:=.Cells(1, num), Header:=xlYes 'デフォルトで昇順になっています。
End With
End Sub
回答有難う御座います。
並べ替えが簡単に出来ないようですので選択したセル列の昇順と降順ボタンを作ってマクロを割り当てるのがいいのでしょうか。
No.1
- 回答日時:
こうすればよいはずです。
ActiveSheet.EnableAutoFilter = True
ActiveSheet.Protect Password:="pass", AllowDeletingRows:=True, userInterfaceOnly:=True , userInterfaceOnly:=True 'こちらはチェックしていません。
回答有難う御座います。
試させていただきましたところ「実行時エラー'448': 名前付き引数が見つかりません。」となってしまいました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Excelシートの保護時にデータの並び替え
その他(Microsoft Office)
-
シート保護してても並び替えをしたい。
Excel(エクセル)
-
シートを保護した時でも並べ替えをするには?〔Excel〕
Excel(エクセル)
-
-
4
[Excel]保護されたシートのマクロによるオートフィルタ有効設定について
Excel(エクセル)
-
5
オートフィルタの使用にチェックを入れても使えない
その他(Microsoft Office)
-
6
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
7
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
8
ShowAllDataのエラーを回避したい
Access(アクセス)
-
9
「Columns(A:C")」の列文字を数字にして表記したい"
Excel(エクセル)
-
10
【Excel VBA】指定行以降をクリアするには?
Visual Basic(VBA)
-
11
Excelで、あるセルだけ入力させたい、オートフィルターも使わせたい際のシートの保護
Excel(エクセル)
-
12
エクセルでエラーが出て困っています。
Excel(エクセル)
-
13
Excelで数値→文字列変換で指数表示になったものをいっぺんに直したい
Excel(エクセル)
-
14
エクセル シート保護をかけるとアウトラインが動作しない
Excel(エクセル)
-
15
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
16
Excel 特定のシートを印刷不可にする方法
Excel(エクセル)
-
17
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
18
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
19
シートの保護のあとセルの列、幅を動かせるようにしたい
Excel(エクセル)
-
20
メッセージボックスのOKボタンをVBAでクリックさせたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【関数】=EXACT(a1,b1) a1とb1...
-
【マクロ】excelファイルを開く...
-
エクセルのリストについて
-
【マクロ】【相談】Excelブック...
-
エクセルの関数について
-
【マクロ】数式を入力したい。...
-
【マクロ】元データと同じお客...
-
【マクロ】実行時エラー '424':...
-
他のシートの検索
-
【マクロ】左のブックと右のブ...
-
【画像あり】オートフィルター...
-
Office2021のエクセルで米国株...
-
LibreOffice Clalc(またはエク...
-
vba テキストボックスとリフト...
-
エクセルのVBAで集計をしたい
-
【マクロ】【配列】3つのシー...
-
エクセルシートの見出しの文字...
-
【マクロ】【画像あり】ファイ...
-
【マクロ】【画像あり】❶ブック...
-
【マクロ画像あり】❶1つの条件...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別シートのマクロを実行する方法
-
Application.Runエラー(1004)
-
エクセルのマクロボタンが編集...
-
Access終了時にマクロまたはVBA...
-
エクセルVBAで、ボタンの文字を...
-
private sub にしたらマクロが...
-
access2010 コマンドまたはアク...
-
シート保護を掛けたまま並べ替...
-
マクロとモジュールの違いを教...
-
アクセスのマクロについて
-
エクセルのマクロ
-
InputBox内の表示について
-
エクセル VBA SendKeys ループ...
-
マクロ 戻るボタンを押したらシ...
-
特定のシートだけ印刷はマクロ...
-
マクロが登録できません
-
ExcelのVBAでDisplayalertsで警...
-
excelで会議室予約表の作成(マ...
-
Excel起動時に画面表示縮小を自...
-
Excel2002を閉じるときの個人用...
おすすめ情報
失礼しました。「userInterfaceOnly:=True 'こちらはチェックしていません」こちらまで入れてしまっていました。それは除いたのですが昇順、降順のボタンは白く押せない状態です。