[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『チェックボックスを連続データでコピー』(わたくしめ)
ツールバーのフォームから,チェックボックスを作成しました。 そして,「コントロールの書式設定」で「リンクするセル」を隣のセルに指定しました。 このチェックボックスをたくさん作りたいので,下にセルコピーしたのですが,「リンクするセル」が,初期値のままで,連続したデータにできません。 右クリックでコピーし,「連続データ」を選ぶこともできません。これは仕様なのでしょうか。 やりたいイメージは下記のようなもので,これを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.