• 締切済み

チェックボックスのリンク先を変更したい

2枚のシートがあります。 1枚のチェックボックスの状態を別シートのセルにリンクしています。 例えばこんな状態です↓ <シートA>   A     B  C 1 ON(B!C1) 001 イグチ 2 OFF(B!C2) 002 アオキ 3 ON(B!C3) 003 ウエダ ※ON/OFFはチェックボックスのことです。  ()内がリンクセルです。 <シートB>  A  B    C 1 001 イグチ TRUE 2 002 アオキ FALSE 3 003 ウエダ TRUE シートAは表示用のシートで実際のデータ操作はシートBを使います。 シートBで並び換えを行ってもシートAのチェックボックスのリンク先は 並び換え前から変わりません。 並び替え後のセルに自動的にリンク先が変わるようにするにはどのように設定すればよいのでしょうか? よろしくお願いします。

みんなの回答

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 チェックボックスは、お話の様子からすると、フォームで作られたものだと思います。確かに、ご質問の内容については、理解しますが、一旦、コピーで取って、別の場所で並び替えをしたほうが、楽ですね。 それ以外は、マクロで処理するしかありません。場所などの変更、また、イベントに取り付けるなどは、もしお分かりになれば、ご自身でお試しになってみてください。 '<標準モジュール> Sub test1() Dim Sh1 As Worksheet, Sh2 As Worksheet Dim chbx As Object, buf As Double Set Sh1 = Worksheets("シートA") Set Sh2 = Worksheets("シートB") With Sh1 For i = 1 To .Range("B1", .Range("B65536").End(xlUp)).Rows.Count rtn = Application.Match(.Cells(i, 2).Value, Sh2.Columns(2), 0) If Not IsError(rtn) Then   For Each chbx In Sh1.Shapes    If chbx.FormControlType = xlCheckBox Then    With chbx    If Not Intersect(.TopLeftCell, Sh1.Cells(i, 1)) Is Nothing Then     buf = IIf(Sh2.Cells(rtn, 3).Value, 1, -4146)     .DrawingObject.LinkedCell = Sh2.Name & "!" & "C" & rtn      .DrawingObject.Value = buf     End If    End With    End If   Next chbx End If Next i End With End Sub

merys
質問者

お礼

ご回答ありがとうございます。 やっぱり自動的には変わらないのですね。。。 教えていただいた方法ではありませんが、何とかすることは出来ました。 ご回答くださったマクロを見て、知らなかった技(?)もあり、大変参考になりました。 エクセルについて少しはわかってきたつもりになっていましたが、まだまだ勉強ですね。 本当にありがとうございました。

関連するQ&A

専門家に質問してみよう