• ベストアンサー

エクセル2000:マクロ(自動記録)ときのソートの記録で「Header:=xlGuess」とは?

こんにちは、よろしくお願いします。 私のVBAのスキルはマクロで自動記録させて、ある程度の手直しをするレベルです。 そこで、「並替」で、次の【意味と違い】を教えてくさだい。「Header:=xlNo」「Header:=xlGuess」 (どうもこの関係で並替えに一行目だけ並び変わらないという不具合を起こすことがあるような気がします。「xlGuess」を「xlNoに」変えると不具合が直りましたが、意味もわからず結果だけ直っても納得いかなくて。)よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。Wendy02です。 >「Header:=xlGuess」 Header については、Sort のヘルプでは、 「最初の行がタイトル行であるかどうかを指定します。」 とあります。 ただ、実際に自分でコーディングする場合は、xlGuess は、ひじょうに使いにくいです。これは、例えば、データが数値であって、第一行目が文字列なら、そのxlGuessは、タイトルがあるものと考えます。そうでなければ、データ行と解釈します。 しかし、コーディングの段階で、こうした曖昧な形を残したまま、マクロとして、実行するということは、あまりすべきではありません。 基本的には、タイトル行があるものとして作るということが、Excelでは基本ですから、元からないままに、並べ替えという仕様、つまり、xlNo というのは、あまり指定しないですね。なるべくなら、xlYes にするような、全体設計をします。私は、そのために、ダミーのタイトル行を加えることもあります。

yastaro
質問者

お礼

Wendy02さん、いつもありがとうございます。 今回のご回答内容、よくわかりました。 なるほど、なるほどです。感謝いたします。

その他の回答 (2)

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.3

Worksheets("Sheet1").Range("A1").Sort の、Sort の部分にカーソルを置いて[F1]キーを押すと、ヘルプで使い方が表示されます。 そこには、 *先頭行をタイトル行と見なすには、xlYes *タイトル行はないものと見なすには、xlNo *自動的に判断させるには、xlGuess (オプションを指定しない)*既定の定数は xlNo と記載されています。 シートを表示させて、手動で並べ替えを行うと、同様の指定項目がありますよね。

yastaro
質問者

お礼

hanahana3さん、いつもありがとうございます。よくわかりました。ヘルプの使い方も参考になりました^^

noname#123709
noname#123709
回答No.1

詳しくは私もわかりませんが、通常の機能で並び替えを行う時に「範囲の先頭行」 をタイトル行とするのかデータ行とするのか指定しますよね。 選択範囲の先頭行をタイトルとする「Header:=xlYes」 選択範囲の先頭行をデータとする「Header:=xlGuess」 と思ってます。

yastaro
質問者

お礼

ご回答をありがとうございました。^^ 後でご回答くださった方の内容が詳細にいたっていたため、今回は、ポイントごめんなさい。

関連するQ&A