Excel2007 Delphi XE3 中央揃えでエラー

解決


momo  2013-03-06 03:32:13  No: 43996

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;

いろいろ調べましたが解決できず困っています。
よろしくお願いします。


momo  2013-03-06 03:47:28  No: 43997

連続で申し訳ありません。

折り返して全体を表示する場合に、
WorkSheet.Range[sRange].Cells.WrapText := True;
を指定すると折り返されるのですが、
縦幅が広がりません。

文字数をみて縦幅をこちらで指定するしかないのでしょうか?


momo  2013-03-06 06:03:05  No: 43998

折り返しの縦幅指定については下記の方法で対応できました。

//1.結合セルの値を別の単一セルXに入れます。.value = .value
//2.セルXの列幅を、結合セルと同じにします。
//3.そのセルXをautofitします。
//4.セルXの行高さ(A値)を取得します。
//5.統合セルが3行分で結合されていたら、A値を3で割ります。
//6.結合セルの各行の行高さを、5項で取得した値に設定します。

センタリングの情報ありましたら教えてください。


Nov  2013-03-06 06:08:24  No: 43999

当方、Win7Pro-64bit/Excel2007/XE2 ですが
WorkSheet.Range[sRange].HorizontalAlignment := Integer(xlCenter);
でOKでした。負数の定数値を渡すときに注意が必要なようです。
(xlCenter: Integer=$FFFFEFF4; と設定されていれば問題ないのですが...)

WorkSheet.Range[sRange].WrapText := True;
は、'Cells.'があってもなくても問題無く縦幅が自動調整されたので、分かりません。
他の書式の影響を受けてませんか?


Nov  2013-03-06 06:11:38  No: 44000

>他の書式の影響を受けてませんか?

良く見たら、MergeCellsと一緒に設定しようとしてますが、これはNGです。
外せば、OKになりませんか?


Nov  2013-03-06 06:15:35  No: 44001

>良く見たら、MergeCellsと一緒に設定しようとしてますが、これはNGです。

間違いです。無視してください。


Nov  2013-03-06 06:45:18  No: 44002

どうやら、仕様のようです(下記リンク参照)。
自前(momoさんの方法含む)で対応するしかないかと...

http://support.microsoft.com/kb/212010/ja


momo  2013-03-07 01:34:01  No: 44003

ありがとうございます。

折り返しの縦幅指定については、貼っていただいたリンクを
確認いたしました。
結合しているとダメなんですね…

センタリングは教えていただいた方法でできました。
ありがとうございました!


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加