• ベストアンサー

エクセル チェックボックス

チェックボックスをコピーすると、セルのリンクはコピー元の設定のままコピーされますが、コピー先に合わせてリンクの設定もかえるようにはできないでしょうか。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

エクセルの関数式の複写の際の、引数の番地の、便利な自動修正機能に慣れて、当たり前と思い勝ちだが、シートのセルと他セル(それも同一シートから始まった、シートが増えて、他シードに貼り付けでも変化するが)において行われるもので、オブジェクトであるチェックボックスやテキストボックスではそこまでサービスされて無い。使うケースもそんなに多くないはず。 (テキストボックスではセルの値をテキストボックスに表示することなどに番地を使う場合がある) エクセルはチェックボックスを何十もシートに貼り付けるようには利用は想定してないようだ。 MSのエクセル開発者は、この件以外も含めて、手動で面倒なケースは、そんなのは、したければVBAを勉強してやりなさいと言う風に感じる。 第2のチェックボックスはセルと何の関係も無いので、第1のチェックボックスがA1にLinkedCellされていても、どうして良いか判らない。(そのコントロールの、Topセルと関連づけて良いものかも自明ではないのだ) 同列で2行ずつ下に設定するなら、やってみたが、一例として下記で出来そう。 しかし、ここにいたるまでにはVBAの勉強が必要と思う。 だから手動で設定するほうがはるかに早い。 第1のチェックボックスのプロパティでLinkedCelllを手動設定。第2チェックボックス以下は下記プログラムで、同列で2行ずつ下に設定する。3つのチェックボックスの例。 フォーム上ではなく、ワークシートに直接チェックボックスを貼り付ける例。 チェックボックスの名前は変えずにCheckBoxのままにしておくこと。 ーー Sub test01() 'r = Worksheets("Sheet2").CheckBox1.Value s = Worksheets("Sheet2").CheckBox1.LinkedCell r = Worksheets("Sheet2").Range(s).Row c = Worksheets("Sheet2").Range(s).Column 'MsgBox r 'MsgBox c For i = 2 To 3 MsgBox Cells(r + (i - 1) * 2, c).Address If Left(Worksheets("Sheet2").OLEObjects(i).Name, 8) = "CheckBox" Then Worksheets("Sheet2").OLEObjects(i).LinkedCell = Cells(r + (i - 1) * 2, c).Address End If Next i End Sub

その他の回答 (2)

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.2

単純なコピー操作ではご希望の設定はできません。 簡単にまとめて作成するならVBAを使用することになります。 例えば、以下のようなコードを実行すれば10個のチェックボックスがデフォルトの行高(13.5)に合わせてまとめて作成できます。 Sub チェックボックス作成() For i = 1 To 10 With ActiveSheet.CheckBoxes.Add(0, 0 + i * 13.5 - 13.5, 0, 0) .LinkedCell = Range("B1").Offset(i - 1, 0).Address .Characters.Text = "" End With Next i End Sub

  • aokii
  • ベストアンサー率23% (5210/22063)
回答No.1

単純にはむりでしょう。

関連するQ&A