こんにちは、VBAを勉強中の者です。
任意のシート(20000行×30列くらいでデータが入っています)に入力されているコメントのみを別シートに抽出し、一列に一覧表示させたいです。
自分でも調べてみて、とりあえずコメントは操作可能ということはわかったのですが、
・任意のシートの中身を行と列の二次元に検索していく方法(特定の行のみ検索するコードはあちこちで見受けられるのですが)
・拾ったコメントの内容を別シートに書き込むのを「高速で」行う方法(その都度書き込んでアクティブセルを移動させる…というのならわかるのですが、データの量が膨大なので、これだと途方もない時間がかかってしまいそうです)
以上の方法がわからないでいます。
また、抽出したコメントは、配列関数を使えば処理が早いのでしょうか。
となると、書き込む件数が何件発生するかわからない場合はどうするのだろうか、と行き詰まっています。
(さらに贅沢を言いますと、コメントが入っていたセル番号が隣の列に入っているといいな、という希望もありますが、これはあくまで第二希望です)
VBA勉強中ですので、パーフェクトに動くコードでなくても構いません。断片的なヒントでも大歓迎です。
VBAに詳しい方、ご教示頂けますでしょうか。
No.2ベストアンサー
- 回答日時:
こんにちは。
KenKen_SP です。Comments コレクション内を For Each で、ループ処理します。
配列は使うまでもないと思います。
Sub Sample()
Dim C As Comment
Dim Cmt As Comments
Dim R As Long
Set Cmt = ActiveSheet.Comments
Application.ScreenUpdating = False
With Worksheets.Add
.Cells(1, 1).Value = "ADDRESS"
.Cells(1, 2).Value = "TEXT"
R = 2
For Each C In Cmt
'コメントの場所
strAddress = C.Parent.Address
'コメントの内容
strText = C.Text
'書き込み
.Cells(R, 1) = strAddress
.Cells(R, 2) = strText
R = R + 1
Next C
End With
Set Cmt = Nothing
End Sub
いつもお世話になっております。
コードもパーフェクトです!いつもながら素晴らしい!
想像していたよりもずっとシンプルなコードで、驚いています。
あとで勉強のため、解読させていただきますね。
まずはとりあえず、お礼まで。
No.1
- 回答日時:
以下のコードで、コメントが別シートに張り付くと思います。
(未確認)------------------------------
Dim cms As Comments
Dim cm As Comment
Dim rg as Range
dim v as variant
set cms = worksheets("任意のシート名").Comments
v = worksheets("任意のシート名").Range("A1:AF20000).value 'データが入っている範囲
for each cm in cms
v(cm.Parent.Row, cm.Parent.Column) = cm.Text
' cm.Parent.Address に$A$1とか入ってます。
next
worksheets("貼り付けたいシート名").Range("A1:AF20000).value = v
こんにちは、動作確認させていただきました。
これは、貼り付け先のシートの、コメントが入っている位置のセルそのものに、コメントが入る仕様ですね。
今回一列に並べたかったので、No.2さんのものを採用させて頂きますが、こちらも応用がききそうです。
どうもありがとうございました。
※なお、実行時に("A1:AF20000) の部分を("A1:AF20000")と修正いたしました。
些細なことですが、今後この回答を参考にされる方の為に、補足させて頂きます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) シートが違う2枚のエクセルシートにある数値を別シートにコピーしたい(VBA?) 8 2022/03/31 12:24
- Visual Basic(VBA) VBA 検索と入力 Excel ブック ぶぶぶ シート ししし 列V 検索対象の列です 最終行は、お 6 2023/05/17 01:40
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) 【VBA】Excelで罫線を引きたい 3 2022/07/14 12:04
- Visual Basic(VBA) Excel vbaについて知恵もしくは、コード教えて下さいm(__)m ① 表にあるデータをコピー、 2 2022/09/01 23:57
- Visual Basic(VBA) 複数のシートを一つのシートにまとめたい 左から3番目以降のシートのE列のセルに⚪︎が入っている行を抽 2 2022/09/18 18:42
- Excel(エクセル) エクセルVBAでチェックボックスにチェックを入れる 1 2022/09/14 00:52
- Excel(エクセル) VBA セルの値と同じ名前のシートにデータを貼り付けするやり方を教えてください 2 2022/05/17 16:26
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) エクセルVBA 任意のセルの選択時、指定のセルの値を表示 1 2023/04/21 08:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
数学 Tan(θ)-1/Cos(θ)について...
-
4つのパターンを表示するEXACT...
-
エクセルの数式で教えてください。
-
エクセルで指定した日付、店舗...
-
Excel:一部のフォントでセルの...
-
Excel初心者です。 詳しい方、...
-
Excel初心者です。 詳しい方、...
-
Excel 2019 のピボットテーブル...
-
スマートな関数を教えて下さい。
-
Excelのグラフ軸について
-
EXACT関数とIF関数の組み合わせ...
-
Excel ウインドウ枠の固定をす...
-
エクセルで日付の入ったセルの...
-
excelの不要な行の削除ができな...
-
INDIRECTを使わず excelで複数...
-
各ページの1番上の表示について
-
スプレッドシートの関数VLOOKUP...
-
エクセルでセルに「氏名を入力...
-
関数を教えて下さい。
-
Excelのif関数で文字が見えなく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ファイル内にある数字の出現回...
-
Excel関数の先頭に「@」が入っ...
-
エクセルの気味悪い不思議
-
Excel VBAで、実行時にsheet上...
-
表示されている人数だけを数え...
-
他人が作ったマクロの理解
-
Excelの関数について質問です。
-
Excel 集計表
-
エクセル 日時の計算式について
-
Excelの関数に関して質問です。...
-
エクセル:セル内の文字列の下...
-
絞り込み検索
-
エクセルの関数で
-
エクセルの書式設定について教...
-
余分なEXCELファイルに印刷され...
-
VBA 同一シート内での転記の仕方
-
長期休みの関数はありますか
-
Excelの空のセル
-
エクセルで入力してある文を別...
-
Excelのマクロで、セルを結合し...
おすすめ情報