DelphiからExcelの操作方法について教えてください。
環境:Excel2007 Delphi XE3
下記のコードの中央揃えでエラーになります。
「RangeクラスのHorizontalAlignmentプロパティを設定できません…」
sRange := GetStrRange(1, iRow + 3, 1, iRow + 3);
WorkSheet.Range[sRange].Cells.HorizontalAlignment := xlCenter;
WorkSheet.Range[sRange].Cells.VerticalAlignment := xlCenter;
ちなみにこっちは大丈夫です。
WorkSheet.Range[sRange].Cells.MergeCells := True;
WorkSheet.Range[sRange].Cells.WrapText := True;
いろいろ調べましたが解決できず困っています。
よろしくお願いします。
連続で申し訳ありません。
折り返して全体を表示する場合に、
WorkSheet.Range[sRange].Cells.WrapText := True;
を指定すると折り返されるのですが、
縦幅が広がりません。
文字数をみて縦幅をこちらで指定するしかないのでしょうか?
折り返しの縦幅指定については下記の方法で対応できました。
//1.結合セルの値を別の単一セルXに入れます。.value = .value
//2.セルXの列幅を、結合セルと同じにします。
//3.そのセルXをautofitします。
//4.セルXの行高さ(A値)を取得します。
//5.統合セルが3行分で結合されていたら、A値を3で割ります。
//6.結合セルの各行の行高さを、5項で取得した値に設定します。
センタリングの情報ありましたら教えてください。
当方、Win7Pro-64bit/Excel2007/XE2 ですが
WorkSheet.Range[sRange].HorizontalAlignment := Integer(xlCenter);
でOKでした。負数の定数値を渡すときに注意が必要なようです。
(xlCenter: Integer=$FFFFEFF4; と設定されていれば問題ないのですが...)
WorkSheet.Range[sRange].WrapText := True;
は、'Cells.'があってもなくても問題無く縦幅が自動調整されたので、分かりません。
他の書式の影響を受けてませんか?
>他の書式の影響を受けてませんか?
良く見たら、MergeCellsと一緒に設定しようとしてますが、これはNGです。
外せば、OKになりませんか?
>良く見たら、MergeCellsと一緒に設定しようとしてますが、これはNGです。
間違いです。無視してください。
どうやら、仕様のようです(下記リンク参照)。
自前(momoさんの方法含む)で対応するしかないかと...
http://support.microsoft.com/kb/212010/ja
ありがとうございます。
折り返しの縦幅指定については、貼っていただいたリンクを
確認いたしました。
結合しているとダメなんですね…
センタリングは教えていただいた方法でできました。
ありがとうございました!
ツイート | ![]() |