gpt4 book ai didi

vba - 使用来自两列的信息创建超链接

转载 作者:行者123 更新时间:2023-12-04 22:09:30 24 4
gpt4 key购买 nike

使用 Excel 2010,在每一行中,我想在 G 列中创建一个超链接。

此列已经包含应用作超链接的显示文本(或友好名称)的信息。

为了使超链接指向正确的位置,它需要列 M 包含的数字。匹配信息总是在同一行。

所以基本上,这可能只是特定行的两个单元格中的两位信息的合并。

这是我开始的:

    Sub Macro2()
'
' Macro2 Macro
'
Dim Name As String
Dim Branch As String

' Combination of two rows
Dim CombineRow As Range

Dim cell As Range
Dim row As Range
Dim Branch_ID As Range

Set Branch_ID = Worksheets("Default").Range("M2")

Set CombineRow = Range("G2:M2")

For Each row In CombineRow.Rows
For Each cell In row.Cells
Branch = Branch_ID.Cells.Value
Name = Name_ID.Cells.Value
ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _
"https://www.example.com/", SubAddress:= _
"something:", _
TextToDisplay:=Name
Next cell
' relative one row down
Set Branch_ID = Branch_ID.Offset(1, 0)
Set Name_ID = Branch_ID.Offset(1, 0)
Next row
End Sub

我不知道如何将列 M 的值(例如 600021610 )附加到超链接的末尾?

我在正确的道路上吗?

编辑:

我现在拥有的是这样的:
Sub Macro2()
'
' Macro2 Macro
'
Dim Branch As String
Dim Name As String

' combine two rows
Dim CombineRow As Range

Dim cell As Range
Dim row As Range
Dim Branch_ID As Range
Dim Name_ID As Range

Set Branch_ID = Worksheets("Default").Range("M2")
Set Name_ID = Worksheets("Default").Range("G2")

Set CombineRow = Range("G2:M2")

For Each row In CombineRow.Rows
For Each cell In row.Cells
Branch = Branch_ID.Cells.Value
Name = Name_ID.Cells.Value
ActiveSheet.Hyperlinks.Add Anchor:=Name_ID, Address:= _
"https://www.example.com/", SubAddress:= _
"something" & Branch, _
TextToDisplay:=Name
Next cell
Set Branch_ID = Branch_ID.Offset(1, 0)
Set Name_ID = Name_ID.Offset(1, 0)
Next row
End Sub

这有效,但仅适用于第一行。为什么它不做循环?是 CombineRow像这样真的正确,或者一定是这样: G:G;M:M或类似的东西?

我也可以想象使用 Do ... While循环,因为放入 end_tag不会有问题。

最佳答案

尝试将参数设置为超链接。添加使用变量。

dim addressStr as string
dim targetRng as Range

For Each row In CombineRow.Rows
For Each cell In row.Cells
Branch = Branch_ID.Cells.Value
Name = Name_ID.Cells.Value

set targetRng = range("A1") 'change this to whatever you want it to be each loop
addressStr = "https://www.example.com/" & cells(cell.row,15).value

ActiveSheet.Hyperlinks.Add Anchor:=targetRng , Address:= _
addressStr, SubAddress:= _
"something:", _
TextToDisplay:=Name
Next cell
' relative one row down
Set Branch_ID = Branch_ID.Offset(1, 0)
Set Name_ID = Branch_ID.Offset(1, 0)
Next row<BR>
End Sub<BR>

此外,您在偏移量中将 Name_ID 和 Branch_ID 设置为相同的值。

在您的循环中,您只会遍历 1 行(因为您的范围都在第 2 行内)。所以你唯一的循环是单元格 - 你永远不会设置不同的分支/名称 ID,因为它们发生在你的循环之后:
For Each cell In row.Cells
'stuff
Next cell

Set Branch_ID = Branch_ID.Offset(1, 0)
Set Name_ID = Name_ID.Offset(1, 0)

因此,每次调用超链接函数时,您都使用相同的 Name_ID 范围。您可能还想制作这些 Offset(0,1) 因为 Offset 是 Offset(row,column) 并且您似乎正在迭代水平范围。

关于vba - 使用来自两列的信息创建超链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11969554/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com