こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel VBA 条件を満たしたセル上にあるチェックボックス

Excel2003を使用しています。

Sheet1のN4セルの値と同じ値が入力されているセルをSheet2のA列(A1:A50)から検索し、その行のB列に配置されているチェックボックスにチェックをつけたいのですが、そのチェックをつけたいチェックボックスを指定する方法がわかりません。

検索してヒットしたセルの1つ右隣のセルにチェックボックスが配置されているということで

myNum = Sheets("Sheet1").Range("N4").Value
Rng = Sheets("Sheet2").Range("A1:A50").Find(myNum)

としたとして、Rng.Offset(, 1).Address と、チェックをつけたいチェックボックスの左上のセルアドレスを比較すればいいのかな?と思っているのですが、そのチェックボックスをどのようにしたら指定できるでしょうか?
また、別の方法もありましたら、アドバイスをいただけると嬉しいです。
よろしくお願いします。

投稿日時 - 2009-03-19 15:06:12

QNo.4809844

すぐに回答ほしいです

質問者が選んだベストアンサー

No1 merlionXXです。
KOH3193さんは、前回の質問の際、フォームではなくコントロールツールボックスのチェックボックスを使うとお書きでしたね。
一応、コントロールツールの方も書いておきます。

Sub test02()
With Sheets("Sheet2")
myNum = Sheets("Sheet1").Range("N4").Value
Set Rng = .Range("A1:A50").Find(myNum).Offset(0, 1)
For Each ob In .OLEObjects
If ob.TopLeftCell.Address = Rng.Address Then
If TypeOf ob.Object Is MSForms.CheckBox Then
ob.Object.Value = True
Exit For
End If
End If
Next
End With
Set Rng = Nothing
End Sub

投稿日時 - 2009-03-19 16:52:44

お礼

お礼が遅くなり、申し訳ありません&回答ありがとうございます!

今回も、merlionXX さんの目に留まり、運が良かったです♪
お察しのとおり、コントロールツールボックスのチェックボックスを使用していますので、No.2のコードも記載していただき、大変助かりました。

ありがとうございました。

投稿日時 - 2009-03-23 17:18:24

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

フォームのチェックボックスでしたら以下で出来ると思います。

Sub test01()
With Sheets("Sheet2")
myNum = Sheets("Sheet1").Range("N4").Value
Set Rng = .Range("A1:A50").Find(myNum).Offset(0, 1)
For Each cb In .CheckBoxes
If cb.TopLeftCell.Address = Rng.Address Then
cb.Value = xlOn
Exit For
End If
Next
End With
End Sub

投稿日時 - 2009-03-19 16:34:07

あなたにオススメの質問