• ベストアンサー

Excel_VBAでハイパーリンクの削除時の書式

Wendy02の回答

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

こんばんは。 コードとしては、よく分からないし、maillist って、シート名だとしたら、CommandButton とは、違うシートでしょうか? maillist.Hyperlinks.Delete このように一括でするとなると、それを、一旦、Range をどこかに確保しなければならないから、結果的には、最初は一括でしても、後が、一括では出来そうな気がしません。 ひとつずつ、以下のようなコードにすればよいと思います。 Hyperlinkから、ただの、Range への切り替えをします。ただ、以前のバージョン(2000)は、Hyperlinkオブジェクトを削除しても色が残った気がします。今は、色と下線は、仮にオブジェクトのRangeにつけても、Hyperlink の削除とともに消えるようですね。 Sub Test1()   Dim v As Variant   Dim r As Range   For Each v In ActiveSheet.Hyperlinks     Set r = v.Range     v.Delete     r.Font.Underline = xlUnderlineStyleSingle     r.Font.ColorIndex = 5   Next v   Set r = Nothing End Sub

関連するQ&A

  • Excel2000 ハイパーリンクを削除するマクロ

    どなたか教えてください。 Excel2000で、URLやメールアドレスを入力すると勝手にハイパーリンクにされてしまいます。 これをハイパーリンクとならないようにするマクロを作りたいのです。 具体的には、特定のセルにだけ、URLやメールアドレスを入力する可能性が あるという条件で、 下記のようにしました。 Private Sub Worksheet_Change(ByVal Target As Range) Application.ScreenUpdating = False nowcell = ActiveCell.Address Target.Hyperlinks.Delete With Range("O14:AI14,L41:AI41") .IndentLevel = 1 .VerticalAlignment = xlCenter .Font.Name = "Arial" .Font.Size = 16 End With Range(nowcell).Activate Application.ScreenUpdating = True End Sub セルが変更されるたびに、O14:AI14,L41:AI41のハイパーリンクを削除して、勝手に 変更された書式を特定の書式に戻すという処理をしています。 ただ、特定の書式を設定しているため異なる書式のセルに同じマクロを使うと、 書式が乱れてしまいます。 それで、ハイパーリンクが削除される前のセル書式を保存しておいて、ハイパーリンクを削除した後に、 復元するということをしたいのですが、どうすればよいでしょうか? イメージ的には、 org_format=target.font nowcell.font=org_format というようにしたいところなのですが・・・ 良いアイデアをご教授ください。 宜しくお願い致します。

  • エクセルVBA 双方向での書式のリンク方法

    エクセルVBAにて双方向での書式のリンクをさせたいと考えています。 具体的にはセルの背景色の双方向リンク方法について教えていただきたいです。ここで双方向での背景色のリンクとは別々のシート上のセルの背景色をどちら側の変更であっても、もう一方に変更を反映させることです。 【シート1】 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" Then Sheets("Sheet2").Range("$A$1").Value = Sheets("Sheet1").Range("$A$1").Value Sheets("Sheet2").Range("$A$1").Interior.ColorIndex = Sheets("Sheet1").Range("$A$1").Interior.ColorIndex End If End Sub 【シート2】 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$1" Then Sheets("Sheet1").Range("$A$1").Value = Sheets("Sheet2").Range("$A$1").Value Sheets("Sheet1").Range("$A$1").Interior.ColorIndex = Sheets("Sheet2").Range("$A$1").Interior.ColorIndex End If End Sub 上記のコードを記述しています。値のリンクはできているのですが背景色のリンクがどうしてもうまくできません。どちらかの変更と同時にもう一方の背景色も変更されるようにするにはどうすればよいでしょうか? どんな方法でもかまいませんのでお詳しい方よろしくお願いします。

  • excel2000vba ハイパーリンク

    excel2000のVBAのプロシージャを教えてください。 写真にあるとおり、sheet1の A1からA200セルまでに、 フルパスのアドレス、0、空白 が入っています。 ここで、フルパスが入っているセルを 下記の条件でハイパーリンクに置きかえたい。 1.フルパスの入っているセルをハイパーリンクのセルに変更する。 2.ハイパーリンクは、ハイパーリンクでも、ハイパーリンク関数でもいい 3.そのフルパスをハイパーリンクのリンク先アドレスにする。 4.表示文字列を ★ としたいです。 また、0が入っているセルは、空白に変更させたい。 以上がやりたいことです。そして下記プロシージャでトライしてみましたがエラーとなりうまくいきません。 プロシージャの修正もしくは、最適なプロシージャがあれば教えて欲しいです。 よろしくお願いします。 Sub test() Dim trange As Range Dim i As Long For i = 1 To 200 trange = ("A" & i) If trange.Value = "" Or "0" Then trange.Value = "" Else Worksheets("Sheet2").trange.Hyperlinks.Add anchor:="★", Address:=trange.Value End If Next i End Sub

  • excel2000のvbaハイパーリンク

    excel2000のvbaユーザーフォームで ラベルをクリックしたら、ハイパーリンクで別のファイルを開くのですが、リンクが切れていた場合、リンクが切れているという風に警告してもらいたいです。 リンクさせるアドレスを、sheet1のA1セルに格納していますが、下記のままだと、リンク切れしていたばあい、エラーとなってしまいます。Private Sub テストラベル_Click()ThisWorkbook.FollowHyperlink Address:=Worksheets(”Sheet1”).Range("A1").TextEnd Subどう修正すればいいでしょうか?

  • Excelシート上のボタンでセルの背景色を設定する

    シート上のボタンを押したときにセルの値と背景色を設定したいのですが、エラーになります。 原因・解決策が分かる方お願いいたします。 Private Sub CommandButton1_Click() With Range("A1") .Value = "Yellow" .Interior.ColorIndex = 6 '実行時エラー1004:InteriorクラスのColorIndexプロパティを設定できません。 End With End Sub 環境 Excel97/Win98

  • エクセルのハイパーリンクについて

    エクセルでsheet1の任意のセルをクリックすると、sheet2の任意のセルにハイパーリンクするようにしています。 その際に、ハイパーリンク先の該当箇所に色がつくようにVisual Basicでプログラムを組み込みました。ひとつのハイパーリンク元にひとつのハイパーリンク先を作っていましたが、ひとつのハイパーリンク元に複数のハイパーリンク先を作り、ハイパーリンク先の該当箇所に色をつけたいのですが、どのようにすればよいのでしょうか?(2つハイパーリンク先があるときは、2つの該当セルに色がつくようにしたいです) Visual Basicで作ったプログラムは以下のとおりです。 Private Sub Worksheet_SelectionChange(ByVal Target As Range) Cells.Interior.ColorIndex = xlColorIndexNone End Sub Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink) ActiveCell.Interior.ColorIndex = 3 End Sub このプログラムを修正する必要がある場合は、Visual Basic初心者なので具体的にどのようにすればよいか教えてください。 よろしくお願いします。

  • EXCEL マクロ 条件によるセルの色付け

    お世話になります。 マクロは初心者です。 C列の数値1~6によって、E列に色付けしたく、ネットで色々検索して、 下記のように組んだのですがコマンドボタンクリックでは上手く動かない のですが、どのように修正すればよいのでしょうか。教えて下さい。 宜しくお願いします。 Private Sub CommandButton4_Click() Dim i As Range Dim r As Range Dim c As Range Dim myColor As Long Set i = Worksheets("マスタ").Range("C:C") Set r = Worksheets("マスタ").Range("E:E") If Intersect(Target, i) Is Nothing Then Exit Sub For Each c In Intersect(Target, i) With c Select Case .Value Case "1" myColor = 22 Case "2" myColor = 44 Case "3" myColor = 6 Case "4" myColor = 43 Case "5" myColor = 41 Case "6" myColor = 24 Case Else myColor = xlColorIndexNone End Select Intersect(c.EntireRow, r).Interior.ColorIndex = myColor End With Next End Sub

  • ハイパーリンクの表示で質問の続きです。

    これで大丈夫かな? Sub test() Dim i As Long For i = 1 To Range("A65536").End(xlUp).Row Cells(i, 1).Hyperlinks(1).TextToDisplay = Cells(i, 1).Hyperlinks(1).Address Cells(i, 2).Value = Cells(i, 1).Hyperlinks(1).Address Next i End Sub ------------------- 有難うございました。完璧ですが、 ハイパーリンクのないセルのところでエラーになります。 ハイパーリンクのないセルは無視(エラーを無視)して次のセルの作業を指示したいのですが、・・・お願いします。 しばらくVBAを離れていまして思い出せません。すみません。

  • 複数のコマンドボタン(VBAで)を一つにまとめたい。

    複数のコマンドボタン(VBAで)を一つにまとめたい。 Private Sub CommandButton1_Click() Application.Goto Reference:=Range("A7"), Scroll:=True End Sub Private Sub CommandButton2_Click() Application.Goto Reference:=Range("A29"), Scroll:=True End Sub Private Sub CommandButton3_Click() Application.Goto Reference:=Range("A51"), Scroll:=True End Sub Private Sub CommandButton4_Click() Application.Goto Reference:=Range("A73"), Scroll:=True End Sub Private Sub CommandButton5_Click() Application.Goto Reference:=Range("A95"), Scroll:=True End Sub Private Sub CommandButton6_Click() Application.Goto Reference:=Range("A117"), Scroll:=True End Sub Private Sub CommandButton7_Click() Application.Goto Reference:=Range("A139"), Scroll:=True End Sub Private Sub CommandButton8_Click() Application.Goto Reference:=Range("A161"), Scroll:=True End Sub Private Sub CommandButton9_Click() Application.Goto Reference:=Range("A183"), Scroll:=True End Sub Private Sub CommandButton10_Click() Application.Goto Reference:=Range("A205"), Scroll:=True End Sub Private Sub CommandButton11_Click() Application.Goto Reference:=Range("A227"), Scroll:=True End Sub 上記のように複数のコマンドボタンを関数化して一つにすることは出来るでしょうか?

  • セルに入力されているアドレスでハイパーリンクを開き

    http://officetanaka.net/excel/vba/tips/tips42.htm これを同じようにしてるのですが Sub test() Range("a1").Value = "http://www.goo.ne.jp/" Range("a1").Hyperlinks(1).Follow NewWindow:=True End Sub これだとエラーになるのですがどうしてでしょうか? 「インデックスが有効範囲にありません。」 と言われます。 セルに入力されているアドレスでハイパーリンクを開きたいです。