C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.6098 の関連記事表示

<< 0 >>
■6098  Re[1]: NumericUpDownの空白入力について
□投稿者/ Hongliang -(2006/08/29(Tue) 12:12:24)
>

    分類:[C#] 

    Text プロパティで判断すればいいでしょう。
    また TextChanged イベントで空白のときに Value プロパティに適切な値を代入しなおすと言う手もあります。

    > 空白は0とみなすとかの振る舞いをしてくれると、何とか成るのですが、そのままですと実際の入力時点でかなり違和感を感じると思います。
    Minimum / Maximum が両方マイナスだった場合、いったいどういう処理をデフォルトにすればいいのか? などということを考えると、この実装は(プログラマ側から見て)妥当なものだと思います。容易に解決できる部分ですしね。
記事No.6095 のレス /0過去ログ6より / 関連記事表示
削除チェック/

■6098  マルチレス
□投稿者/ 魔界の仮面弁士 -(2007/08/01(Wed) 02:24:59)
    2007/08/01(Wed) 03:40:01 編集(投稿者)

    No6009 (HiJun さん)
    > oSheet.Cells[1, 1]の値は、Cellオブジェクトですので...
    Cell オブジェクトではなく、Range オブジェクトではないかと。


    No6019 (C#初心者 さん)
    > Microsoft.Excel 11.0 Object Library を参照しています。
    > こういった現象は私のパソコンだけなのでしょうか?
    > Microsoft.Excel 12.0 Object Library だと正常に動きます。
    実行環境の Excel バージョンと、開発環境の Excel バージョンを一致させてください。
    Excel バージョンが異なると、正常に動作しない可能性が高いです。

    たとえば、Workbooks の Open メソッドの引数の数は、Excel のバージョンによって異なります。
    そのほか、古いバージョンでは戻り値が無い(void)メソッドだったのに、あるバージョンからは
    オブジェクトを返すようになっていたり、新たなメソッドが追加されていたりするなど、
    COM インターフェイスの差異が無視できないため、バージョン混在は基本的にできません。


    No6056 (mあ さん)
    > oSheet.Rows(1).Cells(1) とか、書けないのだろうか??
    VBA なら書けますが、C# では書けません。

    C# ではレイトバインドが使えないので、(他の方が書かれているように)キャストが必要です。

    > Cells[]って古い書き方なんじゃ?
    C# では引数付きプロパティがサポートされておらず、インデクサによって処理されるため、
    言語仕様上、Cells[ ] での表現となります。別に古い書き方というわけではありません。


    No6096 (mあ さん)
    > C# じゃなくてすんまそんですが・・・
    申し訳ないですが、質問者の方が混乱してしまいますので、VB6/VBA 系の情報は
    引っ込めて、C# に限定した話でお願いできますでしょうか。>mあ さん


    > 確かに多いけど、1つ目以外は省略可能ですけど・・・
    VBA ならそうなのですが、C# ではそうではありません。

    C# は、省略可能な引数をサポートしていないため、Optional 引数の部分には
    すべて Missing を指定しなければならないのです。


    No6025 (C#初心者 さん)
    > PIAがインストールできていなかったようです。
    PIA を使うか、(自動生成される)IA を使うかで、微妙にコードが異なってきますので、
    サンプル等を真似る際には注意が必要ですね。

    > oXL = new Excel.Application();
    間違いではありませんが、この場合は
     oXL = new Excel.ApplicationClass();
    の方が適切かと思います。(本題とは関係ありませんが)


    > oSheet.Cells[1, 1].Value = "test";
    > 再下行でValueがエラーになります。
    C# で書く場合には、
     Excel.Range oCells = oSheet.Cells;
     Excel.Range oRange = (Excel.Range)oCells[1, 1];
     oRange.Value = "test";
    または、
     Excel.Range oCells = oSheet.Cells;
     Excel.Range oRange = (Excel.Range)oCells[1, 1];
     oRange.set_Value(Type.Missing, "test");
    となります。

    いずれの構文になるのかは、Excel のバージョンによって異なります。
    Excel 2000 以下であれば前者、Excel 2002 以上であれば後者です。
    http://bbs.wankuma.com/index.cgi?mode=al2&namber=7041&KLOG=6

    # ただし、PIA を使っている場合は前者の表現となることもあります。


    いずれにせよ、oCells[1, 1] の戻り値は object 型であるため、C# においては
    Value プロパティを直接呼び出すことができません。(VB ならば呼べるのですが)
    C# では、Excel.Range 型(または、Excel.IRange)へのキャストが必要になります。
記事No.6004 のレス /過去ログ16より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -