Home » エクセルマクロ・Excel VBAの使い方 » Sortオブジェクト » SortオブジェクトのHeaderプロパティの使い方

SortオブジェクトのHeaderプロパティの使い方

対象:Excel 2010, Excel 2013, Windows版Excel 2016

「エクセルvba sort header 使い方」
という検索キーワードに気づきました。

SortオブジェクトのHeaderプロパティの使い方

Excelの並べ替え機能をVBAから利用する際に使う、SortオブジェクトのHeaderプロパティの使い方を調べていた方による検索でしょうか。

[スポンサードリンク]

シンプルな例で理解しましょう

この件に限らず、よくわからないものを理解するには、できるだけ単純な例で考えましょう。

以下のように単純な表での並べ替えを考えてみます。

SortオブジェクトのHeaderプロパティの使い方

id列には連続する番号を、name列には名前っぽいデータを入れてもいいでが、ここではサンプルなので単純にアルファベットだけを入力しています。

SortオブジェクトのHeaderプロパティについて調べるサンプルマクロ

アクティブシートにデータを用意したら、以下のSubプロシージャを実行してみましょう。

Sub SortオブジェクトのHeaderプロパティを確認する()
 Dim sot As Sort
 Set sot = ActiveSheet.Sort

 sot.SortFields.Clear

 sot.SetRange Range("A1:B6")
 sot.Header = xlYes
 sot.SortFields.Add Key:=Range("B1")

 sot.Apply
End Sub

以下のような並べ替えが行われます。

SortオブジェクトのHeaderプロパティの使い方

セル範囲A1:B6を、
  sot.SetRange Range("A1:B6")

B列をキーにして、
  sot.SortFields.Add Key:=Range("B1")

並べ替えが行われました。
昇順・降順の指定が行われていないので、デフォルトの昇順になっています。

Sort.Header = xlNoで実行

つづいて、
  sot.Header = xlYes
の部分を、
  sot.Header = xlNo
に変更してから実行すると、以下のように並び替えが行われます。

SortオブジェクトのHeaderプロパティの使い方

見出しの「name」も並べ替えの対象となって、この例では一番下に表示されてしまっています。

Sort.Headerプロパティは1行目をヘッダーにするかどうかを指定する

以上、
  sot.Header = xlYes
のときと、
  sot.Header = xlNo
のときを比較すると、SortオブジェクトのHeaderプロパティが何をしているのかがわかるでしょう。

Sort.Headerに定数xlYesを指定すると1行目がヘッダーとして扱われ、xlNoを指定すると1行目もヘッダーではなくデータとして扱われ、並べ替えの対象になるということです。

もうひとつxlGuessという定数も指定可能でき、データなどから推測して1行目をヘッダーにするか否かを自動的に判断されます。

Sort.Header = xlNoを指定するとエラーになるケースもある

以上がSort.Headerプロパティの基本ですが、実は定数xlNoを指定した場合には、「プロシージャの呼び出し、または引数が不正です。」という実行時エラーが発生するケースもあります。

この記事のキッカケとなったキーワード
「エクセルvba sort header 使い方」
を検索なさった方は、この実行時エラーに遭遇したのかもしれません。

「Sort.Header = xlNo」で実行時エラーが発生する条件や理由については、別記事でご紹介します記事を書きました(2018-02-16)。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Sortオブジェクト » SortオブジェクトのHeaderプロパティの使い方

「Sortオブジェクト」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.