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

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

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

No.66638 の関連記事表示

<< 0 >>
■66638  Re[2]: C#でExcelシート上のチェックボックスの変更
□投稿者/ のぶ -(2013/05/13(Mon) 09:42:34)
    No66624 (魔界の仮面弁士 さん) に返信
    ご回答ありがとうございます。
    また、お返事遅くなり申し訳ありません。

    >>Excelのシート上にグループ化されたチェックボックスがあり
    > フォームコントロールのチェックボックスでしょうか。
    > それともActiveXのチェックボックスでしょうか。
    お察し頂けた様にフォームコントロールのものを使用しています。


    > 該当する Shape にまで行き当たったら、あとは上記のように、Shape の DrawingObject プロパティから
    > 操作対象のチェックボックス型を得ることができるはずです。
    chkを取得後、chkからDrawingObjectプロパティからさらにオブジェクトを取得することによって
    チェック状態の変更に成功いたしました。

    書き換えたコードも掲載させていただきます。
    一応目的は果たせたので解決済みとしますが、何か突っ込みどころがあるようでしたらお願いいたします。

    public void CheckedInGroupCheckBox(string sheetName, string groupName, string checkboxName)
    {
    Excel.Worksheet sheet = sheets[sheetName];
    Excel.Shapes shapes = sheet.Shapes;
    Excel.Shape group = null;
    Excel.Shape chk = null;

    Excel.GroupShapes g = null;
    for (int i = 1; i <= shapes.Count; i++) //Count未満でなぜ取得できていたのか・・・
    {
    group = shapes.Item(i);
    if (group.Name == groupName)
    break;
    }

    g = group.GroupItems;

    chk = g.Item(checkboxName);
    var ch = chk.DrawingObject; //DrawingObjectから取得
    ch.Value = true; //取得したオブジェクトに対してValueプロパティでチェック状態を変更する

    ReleaseObj(ref sheet);
    ReleaseObj(ref shapes);
    ReleaseObj(ref group);
    ReleaseObj(ref g);
    ReleaseObj(ref chk);
    }
記事No.66599 のレス / END /過去ログ112より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -