[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『チェックボックスを連続データでコピー』(わたくしめ)
ツールバーのフォームから,チェックボックスを作成しました。 そして,「コントロールの書式設定」で「リンクするセル」を隣のセルに指定しました。 このチェックボックスをたくさん作りたいので,下にセルコピーしたのですが,「リンクするセル」が,初期値のままで,連続したデータにできません。 右クリックでコピーし,「連続データ」を選ぶこともできません。これは仕様なのでしょうか。 やりたいイメージは下記のようなもので,これを1000行くらい作りたいので,いちいちコントロールの初期設定をしていたら大変なので・・・ A B C D 1 ロ FALSE 2 ロ FALSE 3 レ TRUE 4 ロ FALSE 5 レ TRUE 何か良い方法があれば教えていただけると幸いです。
また,チェックの有無にかかわらず,すべてのチェックボックスを一括チェックしたり,一括でチェックを削除したりすることもできるのでしょうか。 どうぞよろしくお願いします。
>このチェックボックスをたくさん作りたいので,下にセルコピーしたのですが, >「リンクするセル」が,初期値のままで,連続したデータにできません。 >いちいちコントロールの初期設定をしていたら大変なので・・・ 面倒ならマクロでやらせたらどうですか。 私は自分で一回ポッキリのマクロを作って対応しましたけど。
>すべてのチェックボックスを一括チェックしたり,一括でチェックを削除したりすることもできるのでしょうか。 これはリンク先のセルの内容を消すか、Trueを書きこむとかすれば、一括でできます。 BJ
マクロが解ったところで、チェックボックスがある程度順番に並んでないと、 望んだ結果になるとは思えませんが、取りあえず形だけ。
また、チェックボックスの名前等もマクロで対応できるように付け直す事もあります。 名前の変更も面倒なので、幸いにもこの程度のマクロがかける様には勉強したので、 マクロで付け直す場合もあります。 マクロが解らなければ、手動で地道な作業をするでしょうね。 BJ
Private Sub リンク設定() Dim Dobj As Shape For Each Dobj In ActiveSheet.Shapes If Dobj.FormControlType = xlCheckBox Then i = i + 1 ActiveSheet.Shapes(Dobj.Name).OLEFormat.Object.LinkedCell = "=A" & i End If Next End Sub
チェックボックスではなく、 該当セルの値を書き換えるものですが・・・ ご参考に。 [[20061020103946]]『クリックすると○の表示』(C)
(HANA)
チェエクボックスまでVBAで作成してしまう方法もあります (この場合は、Captionの作成にも何か便利になる機能を考えなければなりませんが、今回は省略)。
標準モジュールに
'================================================================================== Sub main() Dim mkrng As Range Dim lnkrng As Range Dim crng As Range Dim mcell() As Variant Dim g0 As Long Dim retcode As Long Set mkrng = get_sctrng("チェックボックスを作成するセル範囲を選択してください") If Not mkrng Is Nothing Then Set lnkrng = get_sctrng("対応するリンクセル範囲を選択してください") If Not lnkrng Is Nothing Then g0 = 1 For Each crng In mkrng With mkrng.Parent.CheckBoxes.Add(crng.Left, _ crng.Top, _ crng.Width, _ crng.Height) .LinkedCell = lnkrng.Cells(g0).Address(, , , True) If g0 < lnkrng.Count Then g0 = g0 + 1 End With Next End If End If End Sub '================================================================================== Function get_sctrng(Optional mes As String, Optional mxact As Long = 1) As Range Dim rng As Range Dim retcode As Long On Error Resume Next retcode = 1 Set get_sctrng = Nothing Do Until retcode = 0 Set rng = Application.InputBox(mes, , , , , , , 8) If Err.Number = 0 Then If rng.Areas.Count <= mxact Then Set get_sctrng = rng retcode = 0 End If Else retcode = 0 End If Loop On Error GoTo 0 End Function
として、mainを実行して見てください。
最初にチェックボックス作成セル範囲と対応するリンクセル範囲を指定します。 二つのセル範囲が指定されると、コントロールを作成します。
尚、結合セルには対応していません。
試してみてください
ichinose
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.