コンボボックス型セルの基本的な使用例

文書番号 : 38914     文書種別 : 使用方法     登録日 : 2015/06/29     最終更新日 : 2015/06/29
文書を印刷する
対象製品
SPREAD for Windows Forms 8.0J
詳細
下記にコンボボックス型セルに関して、これまでお問い合わせが多かったことについて記載します。

1.表示値/実値のように2種類のデータを持たせる
2.任意の項目を表示(選択)させる
3.項目を追加する
4.セル毎に項目を動的に変更する

1.表示値/実値のように2種類のデータを持たせる

ComboBoxCellType クラスのItems プロパティによりリストに表示される項目、ItemData プロパティによりリストの表示項目に対する実地を設定することができます。また、EditorValue プロパティにより参照するセルの値の種類を指定することができます。

◎サンプルコード
  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim cmb As New FarPoint.Win.Spread.CellType.ComboBoxCellType()
    'リストに表示されるアイテムを定義します
    cmb.Items = New String() {"Jan", "Feb", "Mar", "Apr", "May", "Jun"}
    '表示される各アイテムに対応したデータを定義します
    cmb.ItemData = New String() {"001", "002", "003", "004", "005", "006"}
    'セルから取得/設定する値はItemDataとします
    cmb.EditorValue = FarPoint.Win.Spread.CellType.EditorValue.ItemData
    FpSpread1.ActiveSheet.Cells(0, 0).CellType = cmb
  End Sub

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim check As String = String.Empty
    check += "表示値:" + FpSpread1.ActiveSheet.Cells(0, 0).Text.ToString() + vbCrLf
    check += "実値:" + FpSpread1.ActiveSheet.Cells(0, 0).Value.ToString()
    MessageBox.Show(check, "確認")
  End Sub


2.任意の項目を表示(選択)させる

セルのValue プロパティからコードで任意の項目を表示させることができます。なお、ComboBoxCellType クラスのEditorValue プロパティにより、セルのValue プロパティに設定する値の種類を変更します。

◎サンプルコード
  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim cmbstr As String() = New String() {"Jan", "Feb", "Mar", "Apr", "May", "Jun"}
    Dim cmbval As String() = New String() {"001", "002", "003", "004", "005", "006"}
    
    Dim cmb1 As New FarPoint.Win.Spread.CellType.ComboBoxCellType()
    cmb1.Items = cmbstr
    cmb1.ItemData = cmbval
    'セルから取得/設定する値はStringとします
    cmb1.EditorValue = FarPoint.Win.Spread.CellType.EditorValue.String
    FpSpread1.ActiveSheet.Cells(0, 0).CellType = cmb1
    '1つ目の項目(Jan)を選択します
    FpSpread1.ActiveSheet.Cells(0, 0).Value = "Jan"
    
    Dim cmb2 As New FarPoint.Win.Spread.CellType.ComboBoxCellType()
    cmb2.Items = cmbstr
    cmb2.ItemData = cmbval
    'セルから取得/設定する値はIndexとします
    cmb2.EditorValue = FarPoint.Win.Spread.CellType.EditorValue.Index
    FpSpread1.ActiveSheet.Cells(0, 1).CellType = cmb2
    '2つ目の項目(Feb)を選択します
    FpSpread1.ActiveSheet.Cells(0, 1).Value = 1
    
    Dim cmb3 As New FarPoint.Win.Spread.CellType.ComboBoxCellType()
    cmb3.Items = cmbstr
    cmb3.ItemData = cmbval
    'セルから取得/設定する値はItemDataとします
    cmb3.EditorValue = FarPoint.Win.Spread.CellType.EditorValue.ItemData
    FpSpread1.ActiveSheet.Cells(0, 2).CellType = cmb3
    '3つ目の項目(Mar)を選択します
    FpSpread1.ActiveSheet.Cells(0, 2).Value = "003"
  End Sub


3.項目を追加する

コンボボックス型セルの項目はString型の配列となっています。そのため、ArrayListクラスを利用することでコンボボックス型セルの項目を追加することができます。なお、ArrayListクラスやString型配列の詳細についてはMSDNライブラリをご参照ください。

◎サンプルコード
  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim cmb As New FarPoint.Win.Spread.CellType.ComboBoxCellType()
    cmb.Items = New String() {"Jan", "Feb", "Mar", "Apr", "May", "Jun"}
    FpSpread1.ActiveSheet.Cells(0, 0).CellType = cmb
  End Sub

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim cmb As FarPoint.Win.Spread.CellType.ComboBoxCellType = CType(FpSpread1.ActiveSheet.GetCellType(0, 0), FarPoint.Win.Spread.CellType.ComboBoxCellType)
    
    'ArrayListクラスを利用して項目の追加を行います
    Dim al As ArrayList = New ArrayList()
    al.AddRange(cmb.Items)
    al.Add("Jul")
    al.Add("Aug")
    
    'Items プロパティを再設定します
    cmb.Items = CType(al.ToArray(GetType(String)), String())
  End Sub


4.セル毎に項目を動的に変更する

セル毎に項目を動的に変更する場合、セル毎にコンボボックス型セルのインスタンスを作成する必要があります。

◎サンプルコード
  Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim cmb1 As New FarPoint.Win.Spread.CellType.ComboBoxCellType()
    cmb1.Items = New String() {"Jan", "Feb", "Mar", "Apr", "May", "Jun"}
    FpSpread1.ActiveSheet.Cells(1, 0).CellType = cmb1
    
    Dim cmb2 As New FarPoint.Win.Spread.CellType.ComboBoxCellType()
    cmb2.Items = New String() {"Jan", "Feb", "Mar", "Apr", "May", "Jun"}
    FpSpread1.ActiveSheet.Cells(1, 1).CellType = cmb2
  End Sub

  Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    'B2セルのコンボボックス型セルの項目を変更します
    Dim cmb2 As FarPoint.Win.Spread.CellType.ComboBoxCellType = CType(FpSpread1.ActiveSheet.GetCellType(1, 1), FarPoint.Win.Spread.CellType.ComboBoxCellType)
    cmb2.Items = New String() {"1月", "2月", "3月", "4月", "5月", "6月"}
  End Sub
関連情報
キーワード
セル型