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&Aを見た人が検索しているワード

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

QEXCELのチェックボックスについて

EXCEL2003を使用しています。

■質問項目があり、回答する複数のセルにチェックボックスを配置してあります。
A列:質問
B列:回答のチェックボックス
C列:回答のチェックボックス
D列:回答のチェックボックス

Z列:OK 又は NGと表記したい。

■各列の回答チェックボックスが全てonになっていたらOK、1つでもoffになっていたらNGと、Z列に表記させたいのですが、どのような式になりますか?

ご回答の程、よろしくお願いいたします。

Aベストアンサー

チェックボックスの "リンクするセル" を利用するのが手早いと思います。
印刷範囲外に true とか false を出力するようにして、そこをあとで集計するとして、その結果をZ列に返しては如何でしょうか?

たとえば、B2のチェックボックスのリンク先を、ずっと右のほうの、AB2というセルにリンクさせます。

そうすると、B2のチェックボックスのチェックしたかどうかが、
true もしくは false で、AB2のセルに表示されます。
これを、C2のチェックボックスをAC2にリンク、
D2のチェックボックスをAD2にリンク。。。という具合に
Y2をAY2にリンクというところまで続けていきます。

次に、AZ2のところに、↓を書き込みます。
=countif(AB2:AY2,"TRUE")
すると、AZ2のところに数字が出ます。

あとは、Z2のところに
=if(AZ2=24,"OK","NG")
と入力してあげれば、思ったとおりに出来るはずです。

3行目以降は、2行目を丸ごとコピーすれば使えます。

チェックボックスとリンクの仕方は下記サイトを参考にしてください。

参考URL:http://kokoro.kir.jp/excel/checkbox.html

チェックボックスの "リンクするセル" を利用するのが手早いと思います。
印刷範囲外に true とか false を出力するようにして、そこをあとで集計するとして、その結果をZ列に返しては如何でしょうか?

たとえば、B2のチェックボックスのリンク先を、ずっと右のほうの、AB2というセルにリンクさせます。

そうすると、B2のチェックボックスのチェックしたかどうかが、
true もしくは false で、AB2のセルに表示されます。
これを、C2のチェックボックスをAC2にリンク、
D2のチェックボックスをAD2にリン...続きを読む

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なるものはなかったはず。

QExcelでセルの値によりチェックボックスを操作

EXCEL2007で作業しています。
シートにチェックボックスを配置しています。

・セルA1の値が「あ」だったら
チェックボックス1にチェックを入れる。

・チェックボックス2にチェックが入っていたら
オートシェイプ2を表示させる

上記2つを実現したいです。
どちらかひとつでもおしえていただければと思います。

よろしくお願いいたします!

Aベストアンサー

>「あ」と入力するシートとチェックボックスを配置しているシートが別シート

手順:
これまでのマクロを「漏れなく全部消去する」

改めて
チェックボックスのシートを開く
開発タブでデザインモードを選択,チェックボックスを右クリック,コードの表示を開始
下記のマクロを記載する

private sub CheckBox1_Click()
 application.enableevents = false
 worksheets("「あ」のシート名").range("F20") = iif(me.checkbox1,"あ","")
 application.enableevents = true
end sub

ファイルメニューからエクセルに戻り,忘れずに開発タブで「デザインモード」を終了する



「あ」のシートを開き,シート名タブを右クリック,コードの表示を開始
下記のマクロをコピー貼り付ける

private sub Worksheet_Change(byval Target as excel.range)
 if target.address = "$F$20" then
  application.enableevents = false
  worksheets("チェックボックスのシート名").checkbox1 = target = "あ"
  application.enableevents = true
 end if
end sub


以上です。

>「あ」と入力するシートとチェックボックスを配置しているシートが別シート

手順:
これまでのマクロを「漏れなく全部消去する」

改めて
チェックボックスのシートを開く
開発タブでデザインモードを選択,チェックボックスを右クリック,コードの表示を開始
下記のマクロを記載する

private sub CheckBox1_Click()
 application.enableevents = false
 worksheets("「あ」のシート名").range("F20") = iif(me.checkbox1,"あ","")
 application.enableevents = true
end sub

ファイルメニューからエクセ...続きを読む

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

QExcel2007 でのチェックボックスの名称

Excel2007 でフォームコントロールのチェックボックスのオブジェクト名のつけ方を教えてください。

普通にチェックボックスをつくって、プロパティを表示してもオブジェクト名をつけれるところがありません。

ActiveXのチェックボックスだと該当するものがでてきます。

やり方を教えて頂ければ助かります。

Aベストアンサー

ぁ、失礼。
[オブジェクトの選択]は2007では[ホーム]タブの[編集]-[検索と選択]にあります。
さらにその下の[オブジェクトの選択と表示]メニューを使うと、
このメニューからでもオブジェクト名を変更する事ができます。

ついでにVBAで名前を設定する例。
'選択して
If TypeName(Selection) = "CheckBox" Then
  Selection.Name = "Check_1"
End If

'あるいはインデックス順にLoopして連番、またはTopLeftCell情報の利用、など
Dim cb As CheckBox
Dim i As Long
For Each cb In ActiveSheet.CheckBoxes
  i = i + 1
  cb.Name = "Check_" & i
  'cb.Name = "Check_" & cb.TopLeftCell.Address(0, 0)
Next

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

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

QExcel VBAのチェックボックスについて

こんばんは、Excel vbaのチェックボックスについてご教授をお願いします。

Userformを作成しています。
チェックボックスを横に4つ配置したとします。その際、常にどれか一つのチェックボックスにしかチェックできないようにしたいのです(チェックしたあとに、違うチェックボックスにチェックしたら、先にチェックしてあるのもはチェックを消したい)。

このような事をしたい場合、マクロ記述での操作になるのでしょうか?それとも、何か違う操作かコマンドがあるのでしょうか?4つ一組でたくさん並べたいので、すべてにマクロ記述となると大変かな?と思いまして・・・。もし、マクロ記述でしか方法が無い場合、マクロ記述の内容も教えて頂ければと思います。

申し訳ありませんが、よろしくお願いします。

※Excel2000を使用しています。

Aベストアンサー

チェックボックスでも出来なくはないのですが、面倒くさいですね。
オプションボタンではダメなのでしょうか?

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文でそのセルの列・行が結合セルの左上と一致した場合に処理を先に進めます。
また、そのセルが結合セルで無い場合は、左上セルの位置は列・行と同じ値になりますので、その場合も処理を先に進めます。

QExcelで各行にチェックボックスを設けたのですが

よろしくお願いします。
Excel2000で表計算をしており、各行にチェックボックスをつけているのですが、行を並び替えするとチェックボックスは並び替えされません。
一緒に並び替えされるようにはできないのでしょうか?

Aベストアンサー

他の方が回答されている
『セルに合わせて移動やサイズ変更をしない』

それ以外の原因として考えられるのは
チェックボックスがその行の中に完全に納まっていないとうまくソートされないはずです。

行の高さを高くしてみてソートを試してみてください。

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を見た人がよく見るQ&A

人気Q&Aランキング