マクロの自動実行についてお伺いします。
今、エクセルに一定のデータを貼り付けたら、(例えばナンバーを元に)自動的にソートされるマクロを作ろうとしてます。
以下流れになります。
****************************
以下貼り付け(エクセル以外からの元データ)
(プログラムの詳細は分かりませんが、エクセルなどにコピペできるものらしいです。)
1|Aさん
3|Bさん
2|Cさん
~
N|XXさん
↑をエクセルをシートに貼り付けしたら、別シートにソートされて
1|Aさん
2|Cさん
3|Bさん
~
N|XXさん
という表が出来上がる。
****************************
自動実行だとworksheet_changeというイベントがあるようですが、特定の範囲なりセルなりが指定されてる場合にいきる処理のように見えます。
そんなに広範囲ではないことは予想できますが、はっきりとしたデータの範囲も量も分からない場合、ループで範囲を覚え、それをソートするのがいいのでしょうか。
ちょっと質問が曖昧な気もしますが、アドバイスお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
>はっきりとしたデータの範囲も量も分からない
量は構いませんが,「どこに貼り付けたい」のかも事前に決められないのですか。
エクセルの方では,あなたが「貼り付け」作業をしたのか,それとも「何かその他のふつーの編集作業」をしたのかは区別は全くできませんので,何をやってもともかく並べ替えをします。
(言い換えると,「A列B列に貼り付けたのなら並べ替え,その他の列に何かしたなら何もしない」みたいにプログラムすることも出来ますが,事前に無いナイ尽くしでは。。。)
手順:
シート名タブを右クリックしてコードの表示を選ぶ
現れたシートに下記をコピー貼り付ける
private sub Worksheet_Change(byval Target as excel.range)
application.enableevents = false
target.sort key1:=target.cells(1), order1:=xlascending, header:=xlno
application.enableevents = true
end sub
ファイルメニューから終了してエクセルに戻る
どこにでもとにかくコピー貼り付けたり編集すると,並べ替える
回答ありがとうございます。
説明が足りませんでした。
質問の内容は「早めにこれをしてほしい」と頼まれたことでした。
どう処理するかを考えてる中で「?」な部分が出てきてしまい、かなり大雑把な部分でもどうすればいいか分からずに質問した次第です。
もう一度整理して、依頼者にどうしたいか確認してから再度取り掛かります。
No.2
- 回答日時:
コレを「ちょっと」曖昧で済まされると冷や汗が出ますね^^;
とりあえず、
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row = 数値 Then '行番号指定(列指定は Target.column)
~~処理~~
End If
End Sub
で、特定の行(列)が変更されたら、と言う命令を書けます。
もちろん、Andで組み合わせることも出来ます。
むしろコレが「頻繁に発生する」処理じゃないのであれば、
データの確認がてら 貼り付け→ソート くらいの処理なのだから
その都度 手でやってもそこまで手間ではないと思いますよ。
むしろ、要らない時にマクロが動いてびっくりすることになるかもしれません。
マクロで書き換わったデータは(普通では)元に戻りませんから、
失敗して一からやり直し・・と言うのもよく聞く話です。
回答ありがとうございます。
処理を考えながら、(No1さんへの回答と同じく)?な点がぽつぽつ出てきてしまっていました。
再度詰めなおしてから取り掛かります。
No.3
- 回答日時:
[Alt]+[F11]VBEで挿入 - 標準モジュール
XL2003において ほぼ自動記録で作ってみました
Sub 並べ替える()
’A2セルに何も入っていなければ 終わる
If Range("A2") = "" Then Exit Sub
’そのシートのA1セルを選んで[Ctel]+[Shift]+[*] その後[Ctrl]+[C]コピー の選択なし版)
Range("A1").CurrentRegion.Copy
’シートの追加
Sheets.Add
'貼り付け
ActiveSheet.Paste
’[Esc] コピーの解除
Application.CutCopyMode = False
’A列を昇順で並び替え
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
:=xlPinYin, DataOption1:=xlSortTextAsNumbers
End Sub
データを張り付けた後[Alt]+[F8]マクロの実行 上記マクロ
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 12:30
- Excel(エクセル) 【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい 6 2022/09/28 18:16
- Excel(エクセル) 単価シートから単価をエクセル関数で自動取得する方法 1 2023/07/02 22:00
- Visual Basic(VBA) Excelのマクロについて教えてください。 1 2023/03/12 12:16
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/03 11:27
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Excel(エクセル) エクセルVBAで複数のシート印刷設定 1 2022/09/07 12:03
- Visual Basic(VBA) ExcelVBAの複数指定範囲の構文 2 2022/05/26 22:39
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) エクセルのマクロで複数シートを両面印刷するには? 2 2022/12/08 23:23
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセル 細かい条件での切り...
-
エクセルにて表に入力→一覧に自...
-
「ドゥ」の簡単なローマ字入力方法
-
Google form グーグルフォーム...
-
テキストファイルで改行に置換...
-
一太郎をワードに変換
-
wordの差込印刷(ラベル作成)...
-
Office Word [ここに入力] が...
-
1MBでドレくらいの文章を書くこ...
-
ワードにて スペースを全て改行...
-
googleカレンダーの予定を入力...
-
PDF 入力途中で改行したい
-
WPS OFFICEでの縦書きについて
-
上ハイフンの打ち方
-
一太郎ファイルをExcelで開きたい
-
一太郎で作成した文書をコピペ...
-
作ったマクロを複数のシートで...
-
Notionが、テーブルビューを一...
-
ワードで住所の漢数字番地の縦...
-
一太郎のコピー、貼り付けにつ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで複数セル範囲をコピ...
-
AccessからExcelへ
-
従事期間の重複チェック、表示
-
エクセルにて表に入力→一覧に自...
-
エクセル 細かい条件での切り...
-
エクセルの行列方向での並び替え
-
エクセルでのデータ蓄積
-
エクセルで空白の項目セルを削...
-
テキストファイルのデータをエ...
-
Google form グーグルフォーム...
-
「ドゥ」の簡単なローマ字入力方法
-
1MBでドレくらいの文章を書くこ...
-
一太郎をワードに変換
-
エクセルの表を選択し、「画像...
-
一太郎で作った文書をWord変換
-
googleカレンダーの予定を入力...
-
エクセルでセル未入力時の初期...
-
一太郎で作成した文書をコピペ...
-
PDF 入力途中で改行したい
-
テキストファイルで改行に置換...
おすすめ情報