EXCEL2000VBAでリンク後に罫線が消える問題

このQ&Aのポイント
  • EXCEL2000VBAでリンク後に罫線が消えてしまう問題が発生しています。
  • Hyperlinks(1).Deleteを実行すると、セルの周りの罫線が右端を残し消えてしまいます。
  • 処理後に罫線を発生させることで回避していますが、原因を突き止めたいと思っています。
回答を見る
  • ベストアンサー

EXCEL2000VBAでリンク後に罫線が消えてしまいます。「No.721379関連質問です。」

GuruGuru22さん先ほどはありがとうございました。 関連質問で申し訳ありません。 [環境] Windows2000 EXCEL2000 [質問] ・下記ソースでの関連で、Hyperlinks(1).Deleteすると セルの周りの罫線が右端を残し消えてしまいます。 現在は、処理後に罫線を発生させて完結してますが、時間 が掛かり、出来れば原因を突き止めたいと思います。 連続の質問で申し訳ありませんが、よろしくお願い致します。 If Not IsNull(Trim(Range("E105").Text)) Or Trim(Range("E105").Text) <> "" Then sURL1 = Trim(Range("E105").Text) Range("E105:AG108").Select If Selection.Hyperlinks.Count <> 0 Then Selection.Hyperlinks(1).Delete End If End If

質問者が選んだベストアンサー

  • ベストアンサー
  • popesyu
  • ベストアンサー率36% (1782/4883)
回答No.1

エクセルの仕様です。VBAでなくても手作業でやっても同じことで、また罫線以外の書式も全てクリアされます。 おそらくスタイルとかあの辺の設定のおかげでそういうことになっているのではないかなぁと思いますが。 ちなみに右側の罫線が残っているように見えるのは、その右のセル上で左側に書いた罫線だからかと思われます。 ということは四方向のセルから向かって罫線を引けば、ハイパーリンクを消しても残ることになりますが。面倒ですよねぇ・・・。

popokun
質問者

お礼

そっそうなんですかー(TT) 仕様では、直しようが無いですね。 ありがとうございました。またよろしくお願い致します。

関連するQ&A

  • EXCEL2000VBAでハイパーリンクの有無を調べたい。

    おはつです。どなたか、知ってらっしゃる方がいらしゃいましたら、よろしくお願い致します。 [環境] Windows2000 EXCEL2000 [質問] ・下記のソースで、ハイパーリンクが設定されている項目 をcmdボタンイベントから設定を外しました。しかし、ハイ パーリンクが元データに設定されていない場合、Errが返り ます。 selectで指定されたセルのハイパーリンク有無を調べる 方法を教えて頂けないでしょうか? If Not IsNull(Trim(Range("E105").Text)) Or Trim(Range("E105").Text) <> "" Then sURL1 = Trim(Range("E105").Text) Range("E105:AG108").Select Selection.Hyperlinks(1).Delete End If

  • VBA(Excel)セルの罫線について・・・

    VBAで、セルに罫線をつけたいのですが、選択範囲の外枠だけに罫線を ひきたいのに、選択範囲内全ての罫線がひかれてしまいます。 以下のようなものを実行しました。 Public sub Sample() Range("A1:C3").Select With Selection .BorderAround .Borders.ColorIndex = 1 '線の色を黒にする .Borders.Weight = xlThin '線を細い線にする End With End Sub どうしたら、選択範囲の外枠だけに線をひけるでしょうか? よろしくお願いします。

  • エクセルVBAでの質問です。

    エクセル2003での質問です。 book1のシート1からbook2のシート18セルC30へ 表のコピーを行い、C30が空白セルだったらそのまま貼り付け、 非空白だったら表最下部から2行あけて表のコピー操作を行う。 としたいのですが以下の箇所でエラーがでてしまいます。 book1.Activate sheet1.Range("C8:E24").Copy book2.Activate If sheet18.Range("C30") = "" Then sheet18.Range("C30:E46").Select Selection.PasteSpecial.xlPasteValues ←実行時エラー424発生 Else sheet18.Range("C30").End(xlDown).Offset(2).Select Selection.PasteSpecial.xlPasteValues ←実行時エラー424発生 End If 以上、解決策をご教示願います。

  • VBAで処理フラグの立て方

    こういった条件でやりたいのですがうまくいきません・・・ 処理フラグの立て方は間違っていないと思うのですが・・・ ちょっとセルとかは変えてあります。 もしE3の値が4で割り切れたら8行目を削除し次の処理は行わない もしE3の値が4で割り切れなかったらE4の値が4で割り切れるか処理をする。 割り切れたら18行目を削除 E3とE4の値両方が4で割り切れなかったら8行目を削除し1行あがるので17行目を削除したいです Sub rdlt() If Range("I1").Value = 0 Then Range("I1").Value = 1 '処理は一度きり If Range("E3").Value Mod 4 = 0 Then Rows("8:8").delete '4で割れたとき8行目を削除 Range("J1").Value = 1 '4で割れたときは次の処理用にフラグ End If If Range("J1").Value = 0 Then 'E3が4で割れなかったときは処理する If Range("E4").Value Mod 4 <> 0 Then Rows("18:18").delete Range("J1").Value = 1 End If End If End If End Sub

  • VBA Excel 罫線(下辺/太線)質問です

    Excelのシート内で、罫線(下辺/太線)を引いたセルの値を取得する事ができたんですが、 これ以降が難しく進むことができません。 Dim rg As Range For Each rg In ActiveSheet.UsedRange If rg.Borders(xlEdgeBottom).Weight = 4 Then MsgBox rg.Address End If Next 上記の様に罫線(下辺/太線)の位置を取得する事ができたんですが、 現状だと列を指定できず罫線(下辺/太線)がある全ての位置を取得してしまいます。 そこで、H列&I列を限定としH3:I3から罫線(下辺/太線)がある所の範囲を取得できませんでしょうか? その取得した範囲をセルの個数を関係なく 100%とし背景色が変更になった箇所が 増えると0%から50%とか80%と言う様に上がって行くように作成したいです。 範囲を全て背景色で塗られたら100%で、全く塗られてなければ0%にしたいです。 結果は、メッセージボックスで表示できる様になると良いです。 画像ですと、黄色の部分がちょうど半分になっているので50%となります。

  • excel2002vbaで選択しているセルがハイパーリンクとそれ以外のものを区別する方法

    ハイパーリンクをenterキーでリンク先に飛べるようにマクロを挿入したのですが、ハイパーリンク以外のセルでenterキーを押下した時に、「インデックスが有効範囲にありません」というエラーメッセジが表示されていまい通常のセル移動が行えません。 使用しているマクロは以前に掲載されていた以下のマクロをしようしています。 何かいい方法はあるでしょうか? Sub Auto_Open() '起動時 キー設定 On Call SettingKeys(True) End Sub Sub Auto_Close() '終了時 キー設定 Off Call SettingKeys(False) End Sub Sub SettingKeys(flg As Boolean) If flg Then Application.OnKey "{Enter}", "JumpHyperLink" Application.OnKey "~", "JumpHyperLink" Else Application.OnKey "{Enter}" Application.OnKey "~" End If End Sub Sub JumpHyperLink() If TypeName(Selection) = "Range" Then Selection.Hyperlinks(1).Follow NewWindow:=False End If End Sub

  • マクロの簡素化

    下記マクロです。 Range("AE6:AE1005").Select Selection.ClearContents Selection.Interior.ColorIndex = xlNone If Range("AD6").Value > 5 Then Range("AE6") = "*" Range("AE6").Select With Selection.Interior .ColorIndex = 3 End With Else End If If Range("AD7").Value > 5 Then Range("AE7") = "*" Range("AE7").Select With Selection.Interior .ColorIndex = 3 End With Else End If If Range("AD8").Value > 5 Then Range("AE8") = "*" Range("AE8").Select With Selection.Interior .ColorIndex = 3 End With Else End If 中略(セルを一個づつ指定しています) If Range("AD1004").Value > 5 Then Range("AE1004") = "*" Range("AE1004").Select With Selection.Interior .ColorIndex = 3 End With End If If Range("AD1005").Value > 5 Then Range("AE1005") = "*" Range("AE1005").Select With Selection.Interior .ColorIndex = 3 End With Else End If Range("AE3").Select 有るセルを参照しその値が5以上だったら別のセルに*マークとセルに色を付けるマクロですが、一個づつセル指定をしていますが、何とか短く出来ないでしょうか? お分かりになる方宜しくお願い致します。

  • エクセル マクロ VBA 罫線 文字列

    職場で使う表をVBAマクロを用いて罫線作成をしています。 前任者のアレンジを頼まれたのですが前任者に連絡が取れず困っています。 表の特徴は以下のようになります。 ・A列を飛ばし、B列から2列飛びで文字を記入 ・b2=曜日、b3=1、b4=2、b5=3、b6=4、b7=空白のセットが曜日ごとに2セット×7日分 この表を ・b2=曜日、b3=-3、b4=-2、b5=-1、b6=0、b7=1、b8=2、b9=3、b10=4、b11=空白のセットが曜日ごとに2セット×7日分 に変更したいのですが空欄の場所がずれてしまい上手くいきません。 原本のマクロは以下です。 ---------------------------------------------------------------- Sub 罫線作成() Range(Cells(4, 1), Cells(86, 22)).Select Selection.Borders(xlDiagonalDown).LineStyle = xlNone Selection.Borders(xlDiagonalUp).LineStyle = xlNone Selection.Borders(xlEdgeLeft).LineStyle = xlNone Selection.Borders(xlEdgeTop).LineStyle = xlNone Selection.Borders(xlEdgeBottom).LineStyle = xlNone Selection.Borders(xlEdgeRight).LineStyle = xlNone Selection.Borders(xlInsideVertical).LineStyle = xlNone Selection.Borders(xlInsideHorizontal).LineStyle = xlNone ch1 = "月火水木金土日" For i = 4 To 76 Step 12 n1 = (i + 8) \ 12 Range(Cells(i, 1), Cells(i + 10, 22)).Select With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeTop) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeBottom) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With With Selection.Borders(xlEdgeRight) .LineStyle = xlContinuous .Weight = xlMedium .ColorIndex = xlAutomatic End With With Selection.Borders(xlInsideVertical) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With With Selection.Borders(xlInsideHorizontal) .LineStyle = xlContinuous .Weight = xlThin .ColorIndex = xlAutomatic End With 'Cells(i, 1) = Mid(ch1, n1, 1) For i2 = 2 To 20 Step 3 For i3 = i To i + 10 nb1 = (i3 + 8) Mod 12 If nb1 = 0 Or nb1 = 6 Then Cells(i3, i2) = Mid(ch1, n1, 1) If nb1 = 1 Or nb1 = 7 Then Cells(i3, i2) = 1 If nb1 = 2 Or nb1 = 8 Then Cells(i3, i2) = 2 If nb1 = 3 Or nb1 = 9 Then Cells(i3, i2) = 3 If nb1 = 4 Or nb1 = 10 Then Cells(i3, i2) = 4 Next Next Next End Sub ---------------------------------------------------------------- 4行目から142行目まで使用することは分かっているのですが… どうかご助力お願いします。

  • フォルダー内のファイルのリンク VBA

    以前、カーソールを置いた部分のテキストとフォルダーの中にあるファイルが一致した場合、 ボタンを押す事によりハイパーリンクを付けるVBAを教えて頂き、現在も活用をさせて頂いています。 今までエクセル「E」列を対象にしていたのですが、 使用しているうちに前列に項目を入れたくなり「E」列の前に2列追加し、 対象の列が「E」列から「G」列の変更になりました。 それから新たにリンクを作成しようとしても実行出来なくなりました。 追加した前列を消しても駄目に。 素人なりに列を指定しているところを変えてみたのですが駄目でして。 If .Column <> 5 Or .Value = "" Then Exit Subを If .Column <> 7 Or .Value = "" Then Exit Subに。 列を変えた場合は、何処をどうすれば良いのでしょうか? 申し訳ありませんが、教えて頂けないでしょうか? 元のVBA Sub Test() Dim fName As String fName = ThisWorkbook.path & "\test\test-a\" With ActiveCell If .Column <> 5 Or .Value = "" Then Exit Sub fName = fName & .Offset(0, -4).MergeArea.Cells(1, 1).Value & _ "\" & .Value & ".prt" If Dir(fName) <> "" Then ActiveSheet.Hyperlinks.Add Anchor:=ActiveCell, Address:=fName End If End With End Sub

  • <Excel>VBAでのオートフィルタについて

    このような式で必要な行を抽出していたのですが、65536行下から検索をかけるので時間がかかります。 データの入っている一番下の行から上へ検索していくにはどのような方法があるでしょうか? Sub sDelLine() Dim i As Long For i = 65536 To 1 Step -1 If Cells(i, 3) = "男" Then Rows(i).Select Selection.Delete Shift:=xlUp End If Next End Sub

専門家に質問してみよう