2016-04-22 25 views
1

ユーザーが選択した範囲のセル内のセルの内容に基づいてハイパーリンクを作成しようとしています。私はループを通ってサイクルを実行するが、ハイパーリンクを作成しない限り、これまでのところこれを得ている。Excel VBAでセルの内容からハイパーリンクを作成する

Sub AcctHyperlink() 
    Dim WorkRng As Range 
    On Error Resume Next 
    Set WorkRng = Application.Selection 
    Set WorkRng = Application.InputBox("Range", "Select Range", WorkRng.Address, Type:=8) 

    For i = WorkRng.Rows.Count To 1 Step -1 
     If WorkRng.Cells(i, 1).Value <> "" Then 

      WorkRng.Cells(i, 1).Hyperlink.Add Anchor:=WorkRng.Cells(i, 1), _ 
      Adress:="https://example.com/" & WorkRng.Cells(i, 1).Value & "/search", _ 
      TextToDisplay:=WorkRng.Cells(i, 1).Value 

     End If 
    Next 
End Sub 
+0

によってAddressHyperlinkによって

Adressは、サイトへようこそ!詳細については、[ツアー](http://stackoverflow.com/tour)をチェックしてください(バッジ!)。私の答えが役に立つなら、上向きの矢印を押してください。私の答えがあなたの問題を解決するならば、それが受け入れられた答えであることを示すためにチェックマークを押してください。ありがとう! – cxw

答えて

1

編集 2つのタイプミス以外の何とCStr()通話を逃します! HyperlinkHyperlinksで、AdressAddressである必要があります。 Range.ItemRangeではなくVariantを返しますので、Excelはコンパイル時にそのようなエラーを報告することはできません。あなたが変更にする必要があり

Option Explicit '<--- always use this for more robust code 

Sub AcctHyperlink() 
    Dim WorkRng As Range 
    'On Error Resume Next '<--- Omit for error checking 
    Set WorkRng = Application.Selection 
    Set WorkRng = Application.InputBox("Range", "Select Range", WorkRng.Address, Type:=8) 

    Dim i as Long '<--- Need this because of Option Explicit 
    Dim addr as String '<--- ditto 
    For i = WorkRng.Rows.Count To 1 Step -1 
     If WorkRng.Cells(i, 1).Value <> "" Then 
      addr = "https://insight.metavante.org/opstopb1/OpstopServlet/Search?activityID=ViewProfileLnNote&activityType=note&activityTrgtID=undefined&activityAction=search&profileView=&accountNumber=" & CStr(WorkRng.Cells(i, 1).Value) & "&accountType=&subAccountNumber=&prcsGrpID=136&RelatedFIs=136&searchBy=account" 
       ' Note: need CStr() 
      '       V--- "Hyperlinks" 
      WorkRng.Cells(i, 1).Hyperlinks.Add Anchor:=WorkRng.Cells(i, 1), _ 
      Address:=addr, _ 
      TextToDisplay:=CStr(WorkRng.Cells(i, 1).Value) 
      '^--- "Address" two lines up 
      '    ^^^^---- Need CStr() 
     End If 
    Next 
End Sub 
+0

これらのタイプミスをキャッチするレスポンスに感謝します。コードは残念ながらハイパーリンクを作成していません。私は現在Excel 2010を使用していますが、この問題が発生する可能性がありますか? – WolfReborn

+0

おそらく。ちょうど気づいた---あなたのコードから "On Error Resume Next"を削除してください。これが実行時にエラーを報告していない理由です。次に、あなたが得るエラーを見てください。私は残念なことにそれをテストすることはできませんExcel 2010を持っていない。 ---もう1つの考え:一時的な文字列の中で最初にアドレスを割り当て、その一時的な文字列を 'Hyperlinks.Add'のパラメータとして使います。デバッグを簡単にするために、個々の行を簡単に保つことは常に良いことです。 – cxw

+0

OK - 修正済み!残りの問題は、 'Value'を使うたびに' CStr() 'が必要だということでした。私はタイプしたランダムな文字でテストしていましたが、数字を使用しています。 '.Value'はセルに数字だけが入っていれば数値ですので、' CStr'を2回(編集済みのコードを見てください)、 'Address'と' TextToDisplay'の文字列に変換する必要があります。 – cxw

0

:私のエクセル2013のインストールで、次の作品Hyperlinks

+0

アブデラ、WolfRebornを助けてくれてありがとう!あなたはすでに回答を投稿しているので、あなたの回答をコメントに載せないでください。私が知る限り、システムはコメントなしでもあなたの答えをWolfに通知します。ありがとうございました! – cxw

+0

ありがとうございましたcxw。 –

+0

私の喜び!あなたがここにいると、人々を助けてうれしい! – cxw

関連する問題