ツイッター出題回答
列全体を指定する時のRangeとColumnsの違い

ExcelマクロVBAとエクセル関数についての私的雑感
公開日:2023-09-24 最終更新日:2023-09-24

列全体を指定する時のRangeとColumnsの違い


ツイッターで出題したVBAに関する問題です。


列全体を指定する書き方に、
Range
Columns
この2通りがあります。
そこで、この2通りの書き方の違いは何かを問う選択問題です。


出題ツイート

vba マクロ RangeとColumnsの違い
https://twitter.com/yamaoka_ss/status/1705178543683174475


【VBA問題】
A:C列全体を指定する書き方として、
Range("A:C")
Columns("A:C")
どちらでもA:Cの列全体になります。
では以下の説明で間違っった説明はどれか?

・For Eachでの取得要素が違う
・どちらも「.Delete」が実行できる
・どちらも「.ColumnWidth = 値」が可能
・どちらも「.AutoFit」が実行できる


解答ツイート

正解は、
「どちらも「.AutoFit」が実行できる」
これが間違った説明になります。
AutoFitはエラーになります。
詳細は以下にて

For Eachでの取得要素が違う

Range("A:C")
このFor Eachは、セルが一つずつ取り出されます。
Sub sample_range()
  Dim rng As Range
  For Each rng In Range("A:C")
    Debug.Print rng.Address
  Next
End Sub

vba マクロ RangeとColumnsの違い

Columns("A:C")
このFor Eachは、列全体(A列、B列、C列)が取り出されます。
Sub sample_columns()
Dim rng As Range
For Each rng In Columns("A:C")
Debug.Print rng.Address
Next
End Sub

vba マクロ RangeとColumnsの違い

どちらも「.Delete」が実行できる

Range("A:C").Delete
Columns("A:C").Delete

どちらも問題なく実行できます。
ちなみに、列全体の削除なのでShift:=は不要です。


どちらも「.ColumnWidth = 値」が可能

Range("A:C").Delete
Columns("A:C").Delete

どちらも問題なく設定できます。


どちらも「.AutoFit」が実行できる

DeleteやColumnWidthができるので、AutoFitも出来そうに思えてしまいます。
ですが、AutoFitはエラーになります。

Range("A:C").AutoFit ← ×
Columns("A:C").AutoFit ← ○

vba マクロ RangeとColumnsの違い

したがって、列幅自動調整のAutoFitを実行するには、

Columns("A:C").AutoFit
Range("A:C").EntireColumn.AutoFit


サイト内の関連記事

第29回.セル・行・列の削除・挿入(Delete,Insert)|VBA入門
単一セルまたは複数セルの削除・挿入と行・列の削除・挿入についてのマクロVBAを解説します。単一セルまたは複数セルを指定しての行全体・列全体に対する削除・挿入と、行・列を指定しての削除・挿入は結果としては同じ事になりますが、マクロVBAの書き方には違いがあり、実際のVBAでは使い分けが必要になる場合があります。
第56回.Rangeオブジェクト(RangeとCells)|VBA入門
エクセルの根幹はセルです、セルはRangeオブジェクトになります、このRangeオブジェクトの理解なくしてマクロVBAは理解できません。マクロVBAで自在にセルを扱う為には、このRangeオブジェクトをしっかりと理解する必要があります。セルを表すVBA記述は多数存在します、Range、Cells、Rows、
第141回.行・列の表示・非表示・列幅・行高|VBA入門
行または列を非表示にしたり、逆に表示したりする場合のマクロVBAについて説明します。また、あるセルが表示されているか(可視セルか)の判定方法について解説します。行や列はRangeオブジェクトです。表示・非表示は、RangeオブジェクトのHiddenプロパティにTrue/Falseを設定することで行います。




同じテーマ「ツイッター出題回答 」の記事

数列内の連続偶数のみ順序を入れ替える
ランクによりポイントを付ける(同順位はポイントを分割)
記号を繰り返してグラフ作成(10単位で折り返す)
Excel関数の引数を省略した場合について
日時データから日付ごとの集計(UNIQUE,SUMIFS,GROUPBY)
シートコピー後のアクティブシートは何か
ByRef引数の型が一致しません。
シートのActiveXチェックボックスの指定方法
列全体を指定する時のRangeとColumnsの違い
スピルのゴーストの範囲を選択するVBA
列幅不足による「####」表示を検知するVBA


新着記事NEW ・・・新着記事一覧を見る

AIは便利なはずなのに…「AI疲れ」が次の社会問題になる|生成AI活用研究(2026-02-16)
カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.マクロとは?VBAとは?VBAでできること|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.メッセージボックス(MsgBox関数)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ