tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルVBAなんですが
記事No14225
投稿日: 2009/11/05(Thu) 14:05
投稿者ひろ
すいません。
こちらで質問していいのかどうかわかりませんが・・・
初心者です。
エクセルのVBAでチェックボックスにチェックがついているか調べるため
チェックボックスを1から10まで順番にチェックしたいのですが

If ChekBox1.Value = True Then
で調べるとOKです。

そこでCheckBox1の1の部分を変更したいのですができません。
どうすればいいのでしょうか?
よろしくお願いします。

[ツリー表示へ]
タイトルRe: VBAなんですが
記事No14226
投稿日: 2009/11/05(Thu) 17:18
投稿者魔界の仮面弁士
> エクセルのVBAでチェックボックスにチェックがついているか調べるため
どのチェックボックスでしょうか?

・シート上の フォームコントロール版 チェックボックス (Excel.CheckBox)
・シート上の ActiveX コントロール版 チェックボックス (MSForms.CheckBox)
・UserForm 上のチェックボックス (MSForms.CheckBox)


とりあえず UserForm のそれだとすれば、下記のように記述する事ができます。

For i = 1 To 10
 If Controls("CheckBox" & CStr(i)).Value = True Then

 End If
Next



> If ChekBox1.Value = True Then
  If CheckBox1.Value = True Then
では無いかな?

[ツリー表示へ]
タイトルRe^2: VBAなんですが
記事No14233
投稿日: 2009/11/07(Sat) 14:30
投稿者ひろ
ありがとうございます。
エクセルのシート上にコントロールボックスからチェックボックスを作りました。

1行目のチェックボックスがONならA1のセルに日付を入力
2行目のチェックボックスがONならA2のセルに日付を入力
    ・
  ・
  ・
  ・
という風に考えてました。
もう一度作ってみます。

[ツリー表示へ]
タイトルRe^3: VBAなんですが
記事No14237
投稿日: 2009/11/09(Mon) 10:44
投稿者魔界の仮面弁士
> エクセルのシート上にコントロールボックスからチェックボックスを作りました。

どのチェックボックスでしょうか?
http://www.vb-user.net/junk/replySamples/2009.11.09.10.51/Excel97.png
http://www.vb-user.net/junk/replySamples/2009.11.09.10.51/Excel2007.png


チェックボックスの種類にもよりますが、たとえば Excel.CheckBox なら、

 Dim c As Excel.CheckBox
 For Each c In Sheet1.CheckBoxes
  If c.Value = xlOn Then
   MsgBox c.Name & " - Checked"
  Else
   MsgBox c.Name & " - Unchecked"
  End If
 Next

とかけますし、MSForms.Checkbox なら

 Dim o As Excel.OLEObject
 For Each o In Sheet1.OLEObjects
  If TypeOf o.Object Is MSForms.CheckBox Then
   If o.Object.Value = True Then
    MsgBox o.Name & " - Checked"
   Else
    MsgBox o.Name & " - Unchecked"
   End If
  End If
 Next

と書けます。
いずれも For Each〜Next の代わりに、For〜Next で制御する事も出来ます。


また後者(MSForms.CheckBox)であれば、コントロール名から CallByName で探す方法もありますし、
前者(Excel.CheckBox)の方であれば、あらかじめ、チェックボックスをセルにリンクさせておき、
そのセルの値から読み取るという手法もあります。

[ツリー表示へ]
タイトルRe^4: VBAなんですが
記事No14238
投稿日: 2009/11/09(Mon) 15:11
投稿者ひろ
魔界の仮面弁士さん
ありがとうございます。

やってみます。

助かりました。

[ツリー表示へ]
タイトルRe^3: VBAなんですが
記事No14239
投稿日: 2009/11/09(Mon) 15:34
投稿者YK
こんにちは。
> エクセルのシート上にコントロールボックスからチェックボックスを作りました。
とありますから コントロールツールボックスとして

> 1行目のチェックボックスがONならA1のセルに日付を入力
> 2行目のチェックボックスがONならA2のセルに日付を入力

チェックボックスのある行のA列に日付を入れます
Sub Macro1()
    Dim shp     As OLEObject
    
    With Worksheets("Sheet1")
        For Each shp In .OLEObjects
            If TypeName(shp.Object) = "CheckBox" Then
                If shp.Object.Value = True Then
                    .Cells(shp.TopLeftCell.Row, 1).Value = Date
                Else
                    .Cells(shp.TopLeftCell.Row, 1).Value = Empty
                End If
            End If
        Next
    End With
End Sub

[ツリー表示へ]
タイトルRe^4: VBAなんですが
記事No14247
投稿日: 2009/11/11(Wed) 18:11
投稿者ひろ
ありがとうございます。
やってみます。

[ツリー表示へ]