人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【エクセル2000/マクロ?】
B9?J9まで表見出しが入力されており、B10?J?(データ行は随時増える)までデータが入っています。
クリック1発で入力済の範囲を並び替えられる「何か」をガイドしてください。ソートキーはB列(日付)を昇順にしたいと思います。

なお、VBやエクセルのマクロを使ったことがありません。このエクセルでVBが使えるかどうかもわかりません。そちら方面になる場合は詳しくお願いします。

お役立ち度で配分させていただきます。どうぞよろしくお願いいたします。

●質問者: naleringar
●カテゴリ:コンピュータ
✍キーワード:VB いただきます エクセル ガイド キー
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● SALINGER
●30ポイント

データを入力する過程でシートがクリックされることがあるので、クリック1発でというのは実用的に問題があります。

変わる方法として、

? ツール→マクロ→新しいマクロの記録で、ショートカットキーのところに適当なキーを入れてOK。

? そのまま記録の終了の四角いボタンを押す。

? Alt+F11を押すとVBEが起動する

? 出てくる画面の

Sub Macro1()
'
' Macro1 Macro
' マクロ記録日 : 2009/3/5 ユーザー名 : hogehoge
'

'End Sub

こんなのを、コピペで

Sub Macro1()
 ActiveSheet.UsedRange.Sort Key1:=Range("B10"), Order1:=xlAscending, Header:=xlGuess, _
 OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
 :=xlPinYin, DataOption1:=xlSortNormal
End Sub

こんなのに変える。

? 左上の×で閉じて、後は先ほどのショートカットで並び替え。


? シートの下の名前のところを右クリックして「コードの表示」を選択

? 出てくる画面に以下をコピペ

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 ActiveSheet.UsedRange.Sort Key1:=Range("B10"), Order1:=xlAscending, Header:=xlGuess, _
 OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
 :=xlPinYin, DataOption1:=xlSortNormal
End Sub

? シートの下の名前のところを右クリックして「コードの表示」を選択

? 出てくる画面に以下をコピペ

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
 ActiveSheet.UsedRange.Sort Key1:=Range("B10"), Order1:=xlAscending, Header:=xlGuess, _
 OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
 :=xlPinYin, DataOption1:=xlSortNormal
End Sub

? 並び替える範囲を選択。

? 昇順で並び替えアイコンをクリック。(無ければメニュー→データ→並び替えを選択)

◎質問者からの返答

ありがとうございます。

ご回答だと、ソートキー及び条件?を設定していただいているのかと思いますが、

並び替える範囲を「B10..J(入力済のどこか?)」まで設定しなおしてくれてから、ソートを実行する

というあくしょん?を、ユーザが作ったボタンないし「何か」に貼り付け・・・よって、クリック1発という表現に・・・というのを想像しています。

どうぞよろしくお願いいたします。


2 ● SALINGER
●60ポイント ベストアンサー

先に提示した処理はデータが入っている範囲を全てB列をキーに全部並び替えるマクロなので、B列?J列でデータの入っている行をボタンで並び替えに変更しました。

? http://www11.plala.or.jp/koma_Excel/contents4/mame4034/mame40340...

こんな感じでボタンをシート上に作る。

? 右クリックでコードの表示を選択。

? 出てくる画面の

Private Sub CommandButton1_Click()

End Sub

こんなのを

Private Sub CommandButton1_Click()
 Dim lastRow As Long
 lastRow = Cells(Rows.Count, 2).End(xlUp).Row
 Range("B9:j" & lastRow).Sort Key1:=Range("B10"), Order1:=xlAscending, Header:=xlGuess, _
 OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
 :=xlPinYin, DataOption1:=xlSortNormal
End Sub

コピペして、こんなのに変更

? 右上の×で閉じて(先の回答で間違えて左上と書いてました)、デザインモードの終了(三角定規と鉛筆のアイコン)をクリック。で、ボタンを押すと並び替え実行。

◎質問者からの返答

ありがとうございます。ボタン作成できました。早速押してみたのですが、

コンパイルエラー、名前つき引数が見つかりません となります。

「DataOption1:=」が反転された状態です。

回答数を増やしておきます。よろしくお願いいたします。

----

コメント補足ありがとうございます!

1クリックで動きましたー!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ