MSFlexGridのセルをチェックボックスに出来るかどうか
という質問はよく目にするのですが、答えがハッキリしないので
ここで質問させてください。
私自身いくらやってもチェックボックスを表示できませんでした。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

出来ません


製品版(VsFlexGrid)の方は、CellCheckedプロパティで出来ます

参考URL:http://www.boc.co.jp/support/database/P1_88.htm
    • good
    • 0
この回答へのお礼

やはりそうでしたか。スッキリしましたありがとうございました。

お礼日時:2001/08/24 14:57

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qチェックボックスの入力チェックについて

VB.NETに関する質問です。

画面の一覧(SPREAD等)にチェックボックスがあり、
全てのチェックボックスにチェックがついているかどうかを調べたいです。

「もし一つでもチェックがついていた場合は、チェック処理から即座に抜け、
もし全てのチェックがついていない場合は、エラーメッセージを出力する」
という動作を求めています。

例えば、

For intRowIndex As integer = 0 To MaxRowCount - 1
If CBool(Cells(intRowIndex, checkboxColumn).Value) Then
'' チェックがついている場合
Exit For
Else
If intRowIndex = MaxRowCount Then
'' エラーメッセージ出力

End If
End If
Next

という処理で求める動きは可能ですが、
もう少しスマートなロジックがないかと考えています。

どなたか教えて頂けませんでしょうか?

VB.NETに関する質問です。

画面の一覧(SPREAD等)にチェックボックスがあり、
全てのチェックボックスにチェックがついているかどうかを調べたいです。

「もし一つでもチェックがついていた場合は、チェック処理から即座に抜け、
もし全てのチェックがついていない場合は、エラーメッセージを出力する」
という動作を求めています。

例えば、

For intRowIndex As integer = 0 To MaxRowCount - 1
If CBool(Cells(intRowIndex, checkboxColumn).Value) Then
'' チェックがついている場合
Ex...続きを読む

Aベストアンサー

MVC的な考えをきっちり入れているのであれば,単純にModelにチェックメソッドを用意するだけです。
Model側もList(Of T)などで管理しているでしょうから,Enumerable.Any拡張メソッドでチェックできます。

ViewとModelの分離をしていないような場合は,コントロール側が内部の要素情報をIEnuemrableで得られることが多いでしょうから,
それに対してAny拡張メソッドを適用するだけです。

仮コードは
Cells.Cast(Of Row)().Any(Function (r) CBool(r(column).Value))
というような感じでしょうか。
# 標準コントロールにSPREADなるものはなかったはず。

Qリストボックスをチェックボックススタイルにしたときに

タイトルにもあるように、リストボックスをチェックボックススタイルにしたときに
リストのなかで一つでもチェックされている項目があるかどうか
という情報を取得するにはどうしたらいいのでしょうか?

Aベストアンサー

例えばVB6で
Private Sub List1_ItemCheck(Item As Integer)
MsgBox List1.Selected(Item)
End Sub

内容の取得
Private Sub List1_ItemCheck(Item As Integer)
Text1.Text=Text1.Text+List1.List(List1.ListIndex)
End Sub

QVB6 API LISTVIEW(チェックボックス付き)にチェックを付けたい

CreateWindowExでLISTVIEW(チェックボックス付きのレポートビュー)を作ったのですが、「山田花子」行にソースでチェックを付ける方法が分かりません。

Form1のソース

Option Explicit

Private Sub Form_Load()

Dim lngRet As Long
Dim lvcol As LV_COLUMN
Dim rStyle As Long
Dim item As LV_ITEM

'-- リストビューの作成
hList = CreateWindowEx(WS_EX_CLIENTEDGE, _
WC_LISTVIEW, "", _
WS_CHILD Or WS_VISIBLE Or WS_BORDER Or _
WS_CLIPSIBLINGS Or WS_CLIPCHILDREN Or _
LVS_REPORT, _
0&, 0&, Me.ScaleWidth / Screen.TwipsPerPixelX, 200&, _
Me.hwnd, _
0&, _
App.HINSTANCE, _
ByVal 0&)

'拡張スタイルを設定
rStyle = rStyle Or LVS_EX_FULLROWSELECT Or LVS_EX_GRIDLINES Or LVS_EX_CHECKBOXES
SendMessageByNum hList, LVM_SETEXTENDEDLISTVIEWSTYLE, 0&, rStyle

'-- カラムヘッダーの追加
With lvcol

.mask = LVCF_FMT Or LVCF_WIDTH Or LVCF_TEXT Or LVCF_SUBITEM
.fmt = LVCFMT_LEFT
.cx = 100
.pszText = "名前"
.iSubItem = 0
lngRet = ListView_InsertColumn(hList, 0&, lvcol)

End With

'-- リストアイテムの追加
With item

.mask = LVIF_TEXT Or LVIF_IMAGE

' 1つめ
.pszText = "山田 太郎"
.iItem = 0
.iSubItem = 0
.iImage = 0
lngRet = ListView_InsertItem(hList, item)

' 2つめ
.pszText = "山田 花子"
.iItem = 1
.iSubItem = 0
.iImage = 1
lngRet = ListView_InsertItem(hList, item)

End With

End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
'-- リストビューを破棄
DestroyWindow hList
End Sub

標準モジュールは補足に書きます

CreateWindowExでLISTVIEW(チェックボックス付きのレポートビュー)を作ったのですが、「山田花子」行にソースでチェックを付ける方法が分かりません。

Form1のソース

Option Explicit

Private Sub Form_Load()

Dim lngRet As Long
Dim lvcol As LV_COLUMN
Dim rStyle As Long
Dim item As LV_ITEM

'-- リストビューの作成
hList = CreateWindowEx(WS_EX_CLIENTEDGE, _
WC_LISTVIEW, "", _
WS_CH...続きを読む

Aベストアンサー

LVITEMのstateMaskとstateメンバを適切に設定してLVM_SETITEMSTATEメッセージを送ればいいようです

Pubic Sub ListView_SetCheckState( hWnd as long, n as long, bflag as integer)
Const LVM_SETITMSTATE = (LVM_FIRST + 43)
  dim oItem as LVITEM
  dim bit as integer
  if bflag then
    bit = &h2000
  else
    bit = &h1000
  end if
  oItem.stateMask = &HF000
  oItem.state = bit

  SendMessage hWnd, LVM_SETITEMSTATE, n, oItem
End Sub

チェック状態の取得は
Pubic Function ListView_GetCheckState( hWnd as long, n as long ) as integer
  Const LVM_GETITMSTATE = (LVM_FIRST + 44)
  dim state as long
  state = SendMessage( hWnd, LVM_GETITEMSTATE, n, &HF000) / 4096
  ListView_GetCheckState = state - 1
End Function

といった具合だと思います

LVITEMのstateMaskとstateメンバを適切に設定してLVM_SETITEMSTATEメッセージを送ればいいようです

Pubic Sub ListView_SetCheckState( hWnd as long, n as long, bflag as integer)
Const LVM_SETITMSTATE = (LVM_FIRST + 43)
  dim oItem as LVITEM
  dim bit as integer
  if bflag then
    bit = &h2000
  else
    bit = &h1000
  end if
  oItem.stateMask = &HF000
  oItem.state = bit

  SendMessage hWnd, LVM_SETITEMSTATE, n, oItem
End Sub

チェック状...続きを読む

QエクセルVBAで、シート上で結合されたセルに一つだけチェックボックスを

エクセルVBAで、シート上で結合されたセルに一つだけチェックボックスを作成したいです。
以前こちらの別の方の質問で、選択されているセルにチェックボックスを作成するプログラムが紹介されており、同じようにやってみたところ、セルが結合されていない場合は問題ないのですが、
セルが複数結合されている場合、結合されているセル分チェックボックスが出来てしまいます。
(例えば、エクセルのシート上で、A3セルからA6セルまでが結合されていた場合、合計4つチェックボックスが結合セル内に出来てしまいます)

結合セル内には一つしかチェックボックスを作りたくありません。
どうしたらよいでのしょうか?
以前紹介されていた、チェックボックスを作るプログラムは下記のようなものでした。
よろしくお願いいたします。

Sub sample()
Dim cb As CheckBox
For Each cb In ActiveSheet.CheckBoxes
cb.LinkedCell = cb.TopLeftCell.Address
Next cb
End Sub

エクセルVBAで、シート上で結合されたセルに一つだけチェックボックスを作成したいです。
以前こちらの別の方の質問で、選択されているセルにチェックボックスを作成するプログラムが紹介されており、同じようにやってみたところ、セルが結合されていない場合は問題ないのですが、
セルが複数結合されている場合、結合されているセル分チェックボックスが出来てしまいます。
(例えば、エクセルのシート上で、A3セルからA6セルまでが結合されていた場合、合計4つチェックボックスが結合セル内に出来てしまいます)...続きを読む

Aベストアンサー

結合セルだった場合、左上のセルにだけチェックボックスを作成する……で良いのかな?

For Each ss In Selection の下に
If (ss.MergeArea.Column = ss.Column) * (ss.MergeArea.Row = ss.Row) Then

Next の上に
End If

を入れて見てください。
.MergeArea.Column、.MergeArea.row は各セルが属する結合セルの基準となる列と行(左上)を返します。
IF文でそのセルの列・行が結合セルの左上と一致した場合に処理を先に進めます。
また、そのセルが結合セルで無い場合は、左上セルの位置は列・行と同じ値になりますので、その場合も処理を先に進めます。

Q行数が変化する表をチェックボックスにチェックが入っている箇所のみ増やし

行数が変化する表をチェックボックスにチェックが入っている箇所のみ増やしたい。

わかりづらい説明で申し訳ありません。
添付画像で説明します。(画像あってもわかりづらいと思いますが^^;)

6月になり、会社Aからの商品購入が入りました。
会社Bからは商品購入は4月以来ないので、商品項目(C列)の行数やD列からG列に該当する部分は増やしたくありません。

会社Aのみ6月分としてD5セルからG15セルまでをコピーして、コピーしたものをD5セルからの部分に「コピーしたセルの挿入」の「右方向にシフト」の方法で挿入し、挿入した「月」「日付」「単価」「数量」のそれぞれのセルに入っている値をクリア(消去)したいです。
「合計」列の各セルには「単価」*「数量」の計算式が入っているので、クリアしたくありません。

会社Aはいろいろな種類の商品を購入しているので、商品数が現在9行分ありますが、元々つまり、最初の段階では会社Bように5行分のみで、購入商品の種類が5つ以上に増えた場合はその都度手動で1行づつ増やしています。つまり必ず決まった何行分か増やせばOKいう事ではありません。
コピーしたい列数はDからGまでの4列と決定しているのですが、増やす行数が事前に決定していない場合に、A列にあるチェックボックスにチェックを入れれば(該当するセルの値がTRUEの時という意味です。リンク設定はされています。)、必要な行数分コピーしてC列とD列の間に挿入出来るエクセルVBAでのプログラムを教えて下さい。

又、挿入後の「月」「日付」「単価」「数量」の各セルに入っている値をクリアするのは、手動でもいいかなと思っています。

尚、画像でもわかりづらいので説明しますと、会社Aの5月分でいうと、A5からA15までは結合セルとなっており、B5からB13までも結合セル、D5からG5も結合セル、D15からG15も結合セルとなっております。

最近色々と訊いてしまって本当に申し訳ありませんが、宜しくお願い致します。

行数が変化する表をチェックボックスにチェックが入っている箇所のみ増やしたい。

わかりづらい説明で申し訳ありません。
添付画像で説明します。(画像あってもわかりづらいと思いますが^^;)

6月になり、会社Aからの商品購入が入りました。
会社Bからは商品購入は4月以来ないので、商品項目(C列)の行数やD列からG列に該当する部分は増やしたくありません。

会社Aのみ6月分としてD5セルからG15セルまでをコピーして、コピーしたものをD5セルからの部分に「コピーしたセルの挿入」の「右...続きを読む

Aベストアンサー

シートに貼り付ける事が出来るチェックボックスには2種類あってどちらなのか明記がありませんでしたので、A列にはチェックボックスではなく、1/0の数値が入っているとしました。

Sub Sample()
  For i = 5 To ActiveSheet.Cells.SpecialCells(xlLastCell).Row
    If Cells(i, 1) = 1 Then
      '結合セルの左上セルか確認
      If (Cells(i, 1).MergeArea.Column = Cells(i, 1).Column) * (Cells(i, 1).MergeArea.Row = Cells(i, 1).Row) Then
        'コピーと挿入
        With Range(Cells(i, 4), Cells(i + Range("A" & i).MergeArea.Count - 1, 7))
          .Copy
          .Insert Shift:=xlToRight
        End With
        Range(Cells(i, 4), Cells(i, 7)).ClearContents '○月の部分をクリア
        Range(Cells(i + 1, 4), Cells(i + Range("A" & i).MergeArea.Count - 2, 6)).ClearContents '合計以外をクリア
      
      End If
    End If
  Next i
End Sub

シートに貼り付ける事が出来るチェックボックスには2種類あってどちらなのか明記がありませんでしたので、A列にはチェックボックスではなく、1/0の数値が入っているとしました。

Sub Sample()
  For i = 5 To ActiveSheet.Cells.SpecialCells(xlLastCell).Row
    If Cells(i, 1) = 1 Then
      '結合セルの左上セルか確認
      If (Cells(i, 1).MergeArea.Column = Cells(i, 1).Column) * (Cells(i, 1).MergeArea.Row = Cells(i, 1).Row) Then
        'コピーと挿入
      ...続きを読む


人気Q&Aランキング

おすすめ情報