プロが教える店舗&オフィスのセキュリティ対策術

エクセルでチェックボックスを一列にたくさんつくり、各行にリンク先のセルを設定する場合、どのようにしたらいいでしょうか?

ひとつつくり、オートフィルしたらすべてのセルのチェックボックスが先頭のセルのリンクを引き継いでしまいました。

A 回答 (2件)

こんばんは



チェックボックスはセルとは無関係に自由な位置に 存在できるオブジェクトなので、ご質問のような仕様になっているものと思います。

一つずつリンクセルを設定すれば良いのですが、数が多いと面倒ですね。
ご希望に沿っているのかどうかはわかりませんが、以下にいくつかのアイデアを。
いずれもマクロを利用しますので、通常の機能だけで実現する方法ではありません。
条件として、チェックボックスのあるセルと、リンクセル(など)の相対的な位置関係に特定の規則が存在すると仮定しています。
(簡単な例で言えば、チェックボックスのあるセルの右隣のセルがリンクセルとか)

1)位置関係から計算して、まとめてリンクセルを設定する方法。
チェックボックスを全て設置し終わったところで、マクロでまとめてリンクセルを設定する方法です。
ただし、位置関係によっては、後から「行の挿入」などを行うと、見た目の位置関係が変わってしまう可能性があります。
また、(当然ですが)後からチェックボックスをコピペで追加しても、期待通りには動作しません。(再設定が必要になります)
不特定の方が利用するようなシートの場合は、保護をかけるなどしておかないと、知らないうちにおかしなことになっている可能性があります。

2)ユーザ定義関数を利用する方法。
「セル位置を指定すると、その位置にあるチェックボックスのON/OFFを返す」ような関数を作成し、それを利用する方法です。
各チェックボックスにはリンクセルを設定せず、例えば
 CHECKED(A3)
とすれば、「A3セルにあるチェックボックスの値を返すユーザ定義関数」を作成しておく という意味です。
この方法の長所は、リンクセルが不要ということですが、一方で欠点として、チェックボックスのON/OFFを変えても、即時には計算式の再計算が行われないということがあります。
計算値を確認したい場合には、手動で再計算をさせる必要がでてしまいます。

3)リンクセルの機能をマクロで実現する方法。
2)と同様にリンクセルの機能は利用しませんが、各チェックボックスにマクロを登録しておきます。
このマクロで、リンクセルの機能の代わりを行うという方法です。
チェックボックスをクリックした際に、セル位置から特定の相対位置にあるセルにチェックボックスの値を記入するというものになります。
こちらの方法であれば、チェックボックスをコピーしても同じマクロが登録されたままコピーされますので、常に配置したセル位置からの相対位置でリンクセルが決まることになります。
ただし、ActiveXのチェックボックスは登録マクロは個別になっており、コピーされませんので、フォームコントロールのチェックボックス限定の方法になります。
フォームコントロールで問題がないのならば、この方法が使いやすいかも知れません。
    • good
    • 0

結局、どういうことをされたいのでしょうか。



> 各行にリンク先のセルを設定する

そのリンク先はどの行にどのようなリンクを設定するのですか?

> オートフィルしたらすべてのセルのチェックボックスが
> 先頭のセルのリンクを引き継いでしまいました。

それはそうでしょう。
では引き継がせないでそれぞれ別のリンク先が設定されるようにしたいのですよね。その目的のリンク先はそれぞれどのように与えるのですか?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A