喫茶XRAYトップページ

[スレッド全体
]

[4342] エクセル操作用関数の処理に注意返信 削除
2011/3/1 (火) 15:22:22 Mr.XRAY
昨日,とある掲示板でエクセル関係の質問を見ました.
質問の内容自体は,私の頭脳では状況が理解できませんが,スレッドの中に

    A:=WorkSheet.Cells.Find(what := 'AB', LookIn:=xlValues).Row;

というコードがありました.
シートの文字列の検索をするもので,現在アクティブなシート内の'AB'を最初だけ
検索するものです.
このコードでは,もし,そのシートにABの文字例が全くないと例外が発生
します.そこで,

400_OLEObjectによるエクセル操作の基本例
http://mrxray.on.coocan.jp/Delphi/plSamples/400_Excel_CreateObject.htm#01

のリスト2では,

  try
    //WorkSheet.Cells.Find('AB').Row;が通常のコードであるが
    //このような書き方も可能という例
    A:=WorkSheet.Cells.Find(what := 'AB', LookIn:=xlValues).Row;
    ShowMessage(VarToStr(A) + '行目にあります');
  except
    ShowMessage('見つかりません');
  end;

のように,try exceptで処理しています.
エクセルのワークシート関数類には,このように失敗すると例外が発生
するものがあります.要注意です.


[4346] Re:エクセル操作用関数の処理に注意返信 削除
2011/3/1 (火) 16:01:16 TS
▼ Mr.XRAYさん

とある掲示板ではExcel2007から上手く行かないとの事ですが。

私のところではテストできないのですが、どうなんでしょうか。

[4347] Re2:エクセル操作用関数の処理に注意返信 削除
2011/3/1 (火) 16:15:59 Mr.XRAY
▼ TSさん

> とある掲示板ではExcel2007から上手く行かないとの事ですが。

サンプルプログラム集の[400]のリスト2でしたら
問題なく動作しますよん.Excel 2000, XP(2002), 2003, 2007, 2010
で動作しますよ.

ちょっと待ってください.その掲示板の見てみますね.

えっと,
GABIN 2011/02/28(月) 18:32:45
のコードでこの方は動作しているみたいですね.
次の方は,分かりませんが,予想としては,単にテストしたシートの
どのセルにもABという文字列がないだけじゃないでしょうか.
テストの状況が書いてないので,確実とは言えませんが.

あのコードでは,他に動作しない原因が考えられないので.


[4348] Re3:エクセル操作用関数の処理に注意返信 削除
2011/3/1 (火) 16:22:04 TS
▼ Mr.XRAYさん

> あのコードでは,他に動作しない原因が考えられないので.

安心しました。

[4350] Re4:エクセル操作用関数の処理に注意返信 削除
2011/3/1 (火) 16:32:16 Mr.XRAY
▼ TSさん

> 安心しました。

例えば,こんなことも考えられます.
半角のABではなく,全角のABはどこかのセルにあるとか,
よく職場の人も間違って入力していることがあります.数字もですが.

まっ,テストした本人に聞くのが一番いいのですが,ちょっと確認しずらい
です.「バカにするな!」と言われてしまいそうで.ハイ.


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82