私が取り組んでいるプロジェクトの一環として、Excelスプレッドシート内にチェックボックスを作成する必要があります。誰かが簡単な例を示したり、参考にしてくれますか? 私はInteropを使用しています。ExcelのスプレッドシートでC#でチェックボックスをプログラムで作成する
ありがとうございます。
私が取り組んでいるプロジェクトの一環として、Excelスプレッドシート内にチェックボックスを作成する必要があります。誰かが簡単な例を示したり、参考にしてくれますか? 私はInteropを使用しています。ExcelのスプレッドシートでC#でチェックボックスをプログラムで作成する
ありがとうございます。
興味深い質問です。私はそれを試していないが、私はそれをWorksheet.Shape項目として追加するか、OLEObjectとして追加すると思います。次の例は、ワークシートから既存のチェックボックスを読み取る方法を示しています。それはおそらくから逆方向に動作するように良い出発場所です:
ワークシートに置くことができるコントロールの2種類があり、ActiveXはコントロールツールボックスからコントロールし、フォーム(または図面からフォームコントロール)ツールバー。
一般に、2つのタイプのコントロールは、同じように機能する点で似ています。つまり、描画ツールバーのテキストボックスは、テキストを入力できるコントロールです。これは基本的にActiveXテキストボックスと同じです。いずれかのタイプのチェックボックスを使用してオプションを選択または選択解除します。明らかに、どちらか一方を使用するかどうかの決定は、その類似点ではなく、その相違に基づいて行われます。とにかく私の主な違いは、イベントとフォーマットです。 ActiveXコントロールを使用すると、スプレッドシートデザイナーは、コントロールのイベントを表示したり反応したりするときに、より柔軟に対応できます。 ActiveXコントロールのプロパティを表示すると、フォームコントロールよりも、ActiveXコントロールのプロパティを表示することができます。また、Forrmsコントロールには、コントロールにマクロを割り当てることでアクセスする1つの基本イベント、clickイベントがあります。一方、ActiveXコントロールには多くのイベントがあります。たとえば、ActiveXコンボボックスには15のイベントがあります。
このような柔軟性はすべて、コストをかけることになります(あなたはそれが分かっていました)。 ActiveXコントロールは、それらに多くのオーバーヘッドを持ち、バグの歴史を持っています。
ActiveXを使用する特定の理由がない限り、私はいつもFormsコントロールを使用します。フォームコントロールは、リーンで平均的で使いやすいものです。しかし、特定のフォントを表示するためにコンボボックスが必要な場合は、ActiveXコントロールを使用する以外に選択肢はありません。同様に、テキストボックス内の特定の文字を避ける必要がある場合は、フォームのテキストボックスからは利用できないKeyPressイベントが必要になります。私のアドバイスと私の練習は、ActiveXコントロールだけが提供する機能が必要な場合を除き、フォームコントロールを使用することです。チェックボックスは、コード
ActiveSheet.CheckBoxes.Add 87, 18, 72, 17.25
ActiveXのチェックボックスを追加
フォームは、コード
ActiveSheet.OLEObjects.Add(ClassType:="Forms.CheckBox.1", Link:=False, _
DisplayAsIcon:=False, Left:=69.75, Top:=59.25, Width:=117.75, Height _
:=14.25)
にこのコードを追加するVBAですが、簡単に、ここでの相互運用
経由.NETから呼び出すことができます私が使用したものですc#
OLEObjects objs = worksheet.OLEObjects();
OLEObject obj = objs.Add("Forms.CheckBox.1", System.Reflection.Missing.Value, System.Reflection.Missing.Value, false, false, System.Reflection.Missing.Value, System.Reflection.Missing.Value, cell.Left + 1, cell.Top + 1, cell.Width - 2, cell.Height - 2);
obj.Object.Caption = "";
if (text == "TRUE")
{
obj.Object.value = true;
}
else
{
obj.Object.value = false;
}
私は、セルの四辺
で国境を維持するために
cell.Left + 1, cell.Top + 1, cell.Width - 2, cell.Height - 2
を使用ヘルプは例えばので、ありがとうございました。私はそれを大いに感謝します。それの音によってフォームのチェックボックスが私のニーズに合ったものです。 –+1良い答え。 :-) –