[[20120130070802]] 『何とかなりませんか?』(みんと) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『何とかなりませんか?』(みんと)
 チェックボックスにチェックをするとJ4にA4も値を参照しています。
これがセル1180まであります。やっぱり一個一個手入力でしょうか?

Sub チェック2_Click()
If ActiveSheet.CheckBoxes(Application.Caller).Value = xlOn Then

       Range("j5").Value = Range("a5").Value
    Else
       Range("j5").ClearContents
    End If
 End Sub

Sub チェック3_Click()
If ActiveSheet.CheckBoxes(Application.Caller).Value = xlOn Then

       Range("j6").Value = Range("a6").Value
    Else
       Range("j6").ClearContents
    End If
End Sub
Sub チェック4_Click()
If ActiveSheet.CheckBoxes(Application.Caller).Value = xlOn Then
       Range("j7").Value = Range("a7").Value
    Else
       Range("j7").ClearContents
    End If
End Sub
Sub チェック5_Click()
If ActiveSheet.CheckBoxes(Application.Caller).Value = xlOn Then
       Range("j8").Value = Range("a8").Value
    Else
       Range("j8").ClearContents
    End If
End Sub
Sub チェック6_Click()
If ActiveSheet.CheckBoxes(Application.Caller).Value = xlOn Then
       Range("j9").Value = Range("a9").Value
    Else
       Range("j9").ClearContents
    End If
End Sub
Sub チェック7_Click()
If ActiveSheet.CheckBoxes(Application.Caller).Value = xlOn Then
       Range("j10").Value = Range("a10").Value
    Else
       Range("j10").ClearContents
    End If
End Sub
こんな風に一個一個気合を入れて1180までやるしかないのでしょうか?
良い方法ありましたらおしえてください。

 Application.Caller を使っているのですから、
 このApplication.Callerで示されるチェックボックス名と
 そのプロシジャー内で使用されているセルのセルアドレスに何らかの
 規則性がありませんか?
 それがあるなら、プロシジャーは、一つで済みます。

 ichinose


 追伸
 これ、チェックボックスが1180必要ってことですか?
 私の感覚からするとこれは、多すぎですねえ!!

 リストボックス(複数選択が可)辺りで代替出来ませんか?
 これも一度、考慮してみてください。
 この場合、ActiveXControl リストボックスなら、ある程度なら装飾できます。

 ichinose


規則性は同じセル内で10ときたら次は11くらいです。
あとはチェックボックスが1から順にならんでます。
リストだとA列の商品名とB列のバーコード&でつないで参照してもバーコードの数字を抜き取れない為に
チェックボックスを使おうとしています。(みんと)

 ichinoseさん同様、チェックボックスの数には???で、もっと別の構成がいいのではと、おもうけど。
ともあれ、
・フォームツールのチェックボックスの名前は初期値のまま(チェック と 半角スペース と 連番)
・連番+3が対象セルの行番号
これが保たれているなら、全てのチェックボックスに以下のプロシジャを登録。

 Sub チェックx_Click()
    Dim n As Long

    n = Split(Application.Caller)(1) + 3

    If ActiveSheet.CheckBoxes(Application.Caller).Value = xlOn Then
        Range("J" & n).Value = Range("A" & n).Value
    Else
        Range("J" & n).ClearContents
    End If

 End Sub

 (ぶらっと)

ぶらっとさんありがとうございました。
これしか思いつかないので頑張ります。
(みんと)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.