dポイントプレゼントキャンペーン実施中!

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

「excel2000vba ハイパーリンク」の質問画像

A 回答 (2件)

模範解答はcj_moverさんが既にご提示下さっていますが、


せっかくですから勉強のために私はさらに原型を残して修正ってことで・・・

Sub test()
Dim trange As Range 
Dim i As Long
 For i = 1 To 200
  Set trange = Range("A" & i)
   If trange.Value = "" Or trange.Value = 0 Then
    trange.Value = ""
   Else
    trange.Hyperlinks.Add anchor:=trange.Cells, Address:=trange.Value, TextToDisplay:="★"
   End If
  Next i
Set trange = Nothing
End Sub

Range で宣言した変数に代入するときは Set が必要です。
If で複数条件を指定するときは And , Or の後ろにも式が必要です。
Hyperlinks の使い方はもう少し勉強が必要かもです。
処理が終わったら変数に Nothing を指定して空にしてやると良いかもしれません。


ご自身のと比較して、勉強のネタにでもしてやってくださいませ。
    • good
    • 0
この回答へのお礼

自分の間違いが、よくわかりました。
大変ありがたかったです。
ありがとうございました。

お礼日時:2012/10/06 23:06

こんにちは。


なるべく、原形を残すように考えたので、
修正点をご自分で確認して次に役立てるようにして貰えるとうれしいです。。

Sub test()
  Dim i As Long
  With Worksheets("Sheet2")
    For i = 1 To 20
      With .Range("A" & i)
        If .Value = "" Or .Text = "0" Then
          .Value = Empty
        ElseIf .Hyperlinks.Count = 0 Then
          .Hyperlinks.Add Anchor:=.Cells, Address:=.Value, TextToDisplay:="★"
        End If
      End With
    Next i
  End With
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございました。
とても分かりやすくて良かったです。

お礼日時:2012/10/06 23:03

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