| 
    
     |  | >INAさんはOLEObjectsというのを使っておられましたが、 >Optionbutton & i.Valueではなぜエラーになるのですか?
 >Optionbutton1.Valueのように番号を指定するとエラーはでないのに。
 visual Basic ではコントロール配列というものがあります。
 オプションボタンなどのコントロールを配列のように扱えるものです。
 Optionbutton(1)
 Optionbutton(2)
 などと表現して便利なものなのですが、VBAでは使用できません。
 
 シート上のコントロールツールボックスのコントロールは
 OLEObjectsというオブジェクトに属する扱いになっております。
 & で結合できるのは文字列ですので、
 オブジェクト等の基本構文は結合できないのです。
 そのため "" で囲まれた文字列の状態に置いて、 & i が使えます。
 Optionbutton1 で1つのオブジェクトになっているので、
 Optionbutton & 1 では動作しないのです。
 これが可能だと
 O & p & t & ion & but & ton1 & . & Value のような
 むちゃくちゃな記述が出来てしまいます。
 
 まとまりのない説明ですが、OLEObjectsを使うと覚えておいて下さい。
 なおユーザーフォーム上で、このような
 「コントロール配列もどき」を使うときは、
 For C = 1 To 3
 If Me.Controls("CheckBox" & C).Value = True Then
 cnt = cnt + 1
 End If
 Next C
 のように Controls を使うと出来ます。
 
 
 |  |