トップページ >
Excel >
機能と操作 >
ハイパーリンクのバグ
ハイパーリンクのバグ
セルにメールアドレスやURLを入力すると、自動的にハイパーリンクが設定されます。あるいは、Ctrl+Kを押して表示される[ハイパーリンクの挿入]ダイアログボックスで、任意のハイパーリンクを挿入することも可能です。うまく使えば、それなりに便利かもしれないハイパーリンク機能ですが、ひとつバグを発見しましたのでお教えしましょう。
(1)まず、セルにハイパーリンクを設定します。メールアドレスでもURLでもOKです。
(2)次に、今入力したハイパーリンクのセルを、別の
複数セルにコピーします。
ここでは3つのセル(C4:C6)にコピーしました。コピー先の3セルには、コピー元と同じハイパーリンクが設定されます。
(3)ここで、一番下のセルC6をセルC9にドラッグします。これは、セルを移動する操作です。
当然ですが、移動したセルC9にもハイパーリンクが設定されていますね。問題は、その上のセルです。空欄のはずのセルC6、セルC7、セルC8にも、なぜかハイパーリンクが設定されています。
(4)さらに、コピーした複数セルの一部を削除してみます。ここでは、アクティブセルをセルC5に移動してDeleteキーを押します。
すると、ハイパーリンクをコピーしたC5以外のセルからも、ハイパーリンクの設定が消えてしまいます。
気になったので調べてみたら、(4)の現象だけはMicrosoftのサポート技術情報に書かれていました。
■複数セルに設定されたハイパーリンクの一部を削除すると全て削除
http://support.microsoft.com/default.aspx?scid=kb;ja;JP417111
今回のように、複数セルに貼り付けた場合だけでなく、オートフィルでコピーしたり、はじめから複数セルを選択した状態でハイパーリンクを設定したときに発生するそうです。また、上記手順(3)ではセルを移動しましたが、ハイパーリンクを貼り付けた複数セルの間に、セルや行を挿入しても同じことになります。
ついでにもうひとつ。
上記手順(2)を実行した直後、ワークシート上には計4つのハイパーリンクが存在しています。ところが、マクロでこれを取得しようとすると、ハイパーリンクの数は2つと認識されます。
Sub Sample1()
Dim i As Long, msg As String
msg = "ハイパーリンクの数:" & ActiveSheet.Hyperlinks.Count & vbCrLf
For i = 1 To ActiveSheet.Hyperlinks.Count
msg = msg & ActiveSheet.Hyperlinks(i).Range.Address & vbCrLf
Next i
MsgBox msg
End Sub
セルC5のハイパーリンクだけを削除すると、コピーした3セルすべて削除されてしまいます。
Sub Sample2()
Dim i As Long, msg As String
Range("C5").Hyperlinks(1).Delete
msg = "ハイパーリンクの数:" & ActiveSheet.Hyperlinks.Count & vbCrLf
For i = 1 To ActiveSheet.Hyperlinks.Count
msg = msg & ActiveSheet.Hyperlinks(i).Range.Address & vbCrLf
Next i
MsgBox msg
End Sub
Excel 97とExcel 2007でも同じ結果になりましたので、すべてのバージョンに潜むバグでしょう。
[目次]に戻る