セルからハイパーリンクを削除すると、書式設定も削除されます。
Selection.Hyperlinks.Delete
フォーマットを保持する方法はありますか、またはハイパーリンクを削除した後に再適用する必要がありますか?
解決策は電話することでした
Range.ClearHyperlinks
それ以外の
Range.Hyperlinks.Delete
前者はハイパーリンクをクリアし、フォーマットをそのまま残します。ここでの参照:https ://msdn.microsoft.com/en-us/library/office/ff194741.aspx
これも少し奇妙なことだと思います...これがあなたに受け入れられるかどうかはわかりません。これを試して:
Selection.Hyperlinks(1).Address = ""
これは、ハイパーリンクがないように機能します。唯一の違いは、カーソルがデフォルトのプラス記号ではなく手に変わることですが、他のセルと同じようにクリックできます。
上記の解決策は、マージされたセルを操作する場合に問題を引き起こします。これはその問題の周りで機能します
data = Selection.value
Selection.Value = "" 'this removes the hyperlink
Selection.Font.Underline = xlUnderlineStyleNone 'remove the hyperlink underlining
With ActiveCell.Font 'replace hyperlink blue with black
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
End With
Selection.Value = data
フォーマットがザッピングされるのを防ぐ方法がわかりませんでした。私が思いついた回避策は、ハイパーリンクを削除する前にセルをコピーし、ハイパーリンクを削除した後にフォーマットをセルに貼り付けることでした。
' copy cell to remote location to "remember" formatting
ActiveCell.Copy Sheets("Templates").Range("a1")
' remove hyperlink
ActiveCell.Hyperlinks.Delete
' reapply formatting
Sheets("Templates").Range("A1").Copy
ActiveCell.PasteSpecial Paste:=xlPasteFormats
これを行うためのより良い方法を教えてください。あなたの回答を答えとして受け入れます。
ActiveCell.Style = "Normal"
言い換えれば、あなたはそこにあるべきスタイルを再適用します。一方、「通常」は、Excellに存在するいずれかのセルスタイルの名前で変更できます。この方法で独自のスタイルを適用する場合は、それをセルスタイルリストに追加します。
さらに一歩進みたい場合。すでにそこにあるセルスタイルを取得し、文字列でキャッチして再適用できます。
Dim sStyleName as String
sStyleName = ActiveCell.Style 'Capture the current cellstyle
ActiveCell.Hyperlinks.Delete 'Remove the hyperlink
ActiveCell.Style = sStylename 'Reapply the cellstyle used before
For Each cll In Selection
cll_val = cll.Value
cll.ClearContents
cll.Value = cll_val
With cll.Font
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.Underline = xlUnderlineStyleNone
End With
Next
これは、貼り付け情報を別の場所との間でコピーしたくない場合にも役立ちます。マージされたセルでこれを試したことはありませんが、これは機能するはずです。
Dim temp As Variant
temp = (RangeObject).Interior.Color
(RangeObject).Hyperlinks.Delete
(RangeObject).Interior.Color = temp
透明で、ハイパーリンクが必要なセルをオーバーレイする図形にハイパーリンクを適用することもできます。
ここでの欠点は、リンクされていないときにカーソルがマウスオーバーで変化することです。また、エンドユーザーが図形を移動したり、削除したりすることもできます。