2016-06-15 12 views
1

データを持つ列Aにハイパーリンクを挿入しようとしています。たとえば、A1はタイトルです。 A2は12345で、ハイパーリンクはhttp://123.1.1.1/?id=12345です。データのある列にハイパーリンクを挿入する

現在、私は約11000行を含むワークシート上でマクロを実行しています。約1時間ですが、まだ実行中です...

また、この単一のマクロがすべてのワークシートで機能するかどうかを確認しようとしています。以下は

私のマクロ

Sub AddUrlSheet1() 
With Worksheets(1) 

Set R = ActiveSheet.Range("a2", ActiveSheet.Range("a2").End(xlDown)) 
R.Select 

For Each R In Selection.Cells 

.Hyperlinks.Add Anchor:=R, _ 
Address="http://123.1.1.1/" & R.Value 

Next R 
End With 
End Sub 
+0

これを実行する前に、ScreenUpdatingをFalseに設定するとスピードがアップします。それがどれくらい時間がかかるかを伝えることは不可能です! –

+1

HYPERLINKワークシート関数を見たいと思うかもしれません。 – jkpieterse

答えて

0

はこれを試してみてくださいです:

Sub AddUrlSheet1() 
    Application.ScreenUpdating = False 
    Application.Calculation = xlCalculationManual 
    ' 
    Dim LastUsedRow As Long 
    Dim r As Range, c As Range 
    With ActiveSheet 
     LastUsedRow = .Columns("A").Cells.Find("*", SearchOrder:=xlByRows, LookIn:=xlFormulas, SearchDirection:=xlPrevious).Row 
     Set r = .Range(.Cells(2, 1), .Cells(LastUsedRow, 1)) 
    End With 
    ' 
    For Each c In r 
     c.Hyperlinks.Add Anchor:=c, Address:="http://123.1.1.1/" & c.Value 
    Next c 
    Application.Calculation = xlCalculationAutomatic 
    Application.ScreenUpdating = True 
End Sub 

これは

0

の代わりにすることによって、細胞をループし、現在列Aでそれらの値を持つすべてのセルにハイパーリンクを追加しますセルを使用する場合はHyperlink()Formulaと入力してください。あなたは既に既存のデータを反復処理する必要がある場合は、あなたのR値が列Aにある場合、これは

Sub t() 
Dim rng As Range 
' Note: Update the `10` to match your lastRow 
Set rng = Range("B2:B" & ActiveSheet.Range("a2").End(xlDown).Row) 

rng.FormulaR1C1 = "=HYPERLINK(""http://123.1.1.1/""&RC[-1],""Link"")" 

End Sub 

列Bにハイパーリンクに記入します、@クリスの答えはかなりよさそうです。

+0

ありがとう、私は同じ列を使用することはできませんので、再利用することはできません? – formosanmountainbear

+0

@ yu2bike - どういう意味ですか?私はちょうどあなたが "1.2.3"、 "12.203.2"などのような値を持っている場合、列Aの場合は、このマクロは、列Bにハイパーリンクを配置することを意味した。あなたのOPのマクロは、列Aを通過し、 AFAIK、セル上のリンク。 – BruceWayne

+0

私は、B列をハイパーリンク用に別の列に使用できない場合は、元のルートを使用する必要がありますかと質問しました。 (セルでループするセル?) – formosanmountainbear