【问题标题】:Force formatting with URL in cell使用单元格中的 URL 强制格式化
【发布时间】:2020-08-13 02:58:14
【问题描述】:

我正在尝试在用户将 URL 输入合并单元格(“F22:I22”)的位置自动将其格式化为 URL/超链接。因此,如果有人输入google.com,它将使其成为https://www.google.com/ 并验证它。

我有。 (我几乎可以肯定这是错误的)

Sub formaturl () 
    if ishyperlink(value) then values (x,y) = format(value, "https:// .com")
End Sub 

我看过代码,您可以在其中使用下拉菜单将超链接添加到单元格。这不是我想要的,因为用户将添加他们的公司 URL。

编辑:这是我能够开始工作的最终代码。我还将“超链接”单元格样式修改为没有下划线的 Arial 16 号字体,以便于阅读。

Sub handlethingone(target As Range)

    Dim ws As Worksheet
    Dim xCell As Range
    Dim prefixAddress As String
    Dim suffixAddress As String

    Set xCell = ActiveSheet.Range("F22")
    Set ws = ActiveSheet
    prefixAddress = "www."
    suffixAddress = ".com"

    With ws
       If .Range("F22").Value <> vbNullString Then
            If Not Left(.Range("F22").Value, 4) = prefixAddress Then
                xCell.Parent.Hyperlinks.Add Anchor:=xCell, Address:="", SubAddress:= _
                prefixAddress & xCell, TextToDisplay:=prefixAddress & xCell
            End If
            If Not Right(.Range("F22").Value, 4) = suffixAddress Then
                xCell.Parent.Hyperlinks.Add Anchor:=xCell, Address:="", SubAddress:= _
                xCell & suffixAddress, TextToDisplay:=xCell & suffixAddress
            End If
        End If
    End With
  With xCell.Font
        .Name = ("Arial")
        .Size = 16
        .Color = RGB(0, 0, 0)
        .Underline = xlUnderlineStyleNone
    End With

    With xCell.Font
        .Name = ("Arial")
        .Size = 16
        .Color = RGB(0, 0, 0)
        .Underline = xlUnderlineStyleNone
    End With



End Sub

【问题讨论】:

  • 不,我有一个不同的问题,想通了,然后有这个问题,但忘记更改标题..知道怎么做吗?
  • 您是只对一个单元格还是多个单元格执行此操作?因为可能有更好的方法来做到这一点。
  • 提供的范围是一个合并的单元格。这将是工作表中唯一会使用它的位置。
  • 如何知道 URL 是否为 https?
  • 我不知道,如果使用 http 更容易,那也没关系。如果只是做 www.somelink.com 更容易,我也可以。

标签: excel vba hyperlink


【解决方案1】:

您可以尝试如下所示:

Option Explicit
Sub HyperlinkFormatter()

    Dim ws As Worksheet
    Dim xCell As Range
    Dim prefixAddress As String
    Dim suffixAddress As String
    
    Set xCell = ActiveSheet.Range("F22")
    Set ws = ActiveSheet
    prefixAddress = "www."
    suffixAddress = ".com"
    
    With ws
       If .Range("F22").value <> vbNullString Then
            If Not Left(.Range("F22").value, 4) = prefixAddress Then
                xCell.Parent.Hyperlinks.Add Anchor:=xCell, address:="", SubAddress:= _
                prefixAddress & xCell, TextToDisplay:=prefixAddress & xCell
            End If
            If Not Right(.Range("F22").value, 4) = suffixAddress Then
                xCell.Parent.Hyperlinks.Add Anchor:=xCell, address:="", SubAddress:= _
                xCell & suffixAddress, TextToDisplay:=xCell & suffixAddress
            End If
        End If
    End With
    
    With xCell.Font
        .ColorIndex = xlAutomatic
        .Underline = xlUnderlineStyleNone
    End With

    With xCell.Font
        .Underline = xlUnderlineStyleSingle
        .Color = -4155132
    End With

End Sub

【讨论】:

  • 当单元格 F22 中有数据并且它们进入或移动到不同的单元格时,我需要它来工作。并使用 www 格式化。如果没有输入。
  • 这不会更新任何内容。 Private Sub URL_change(ByVal target As Range) Dim xCell As Range Set xCell = ActiveSheet.Range("F22") xCell.Parent.Hyperlinks.Add Anchor:=xCell, Address:="", SubAddress:= _ "SUPPLIER!F22", TextToDisplay:="Address" With xCell.Font .ColorIndex = xlAutomatic .Underline = xlUnderlineStyleNone End With With xCell.Font .Underline = xlUnderlineStyleSingle .Color = -4155132 End With End Sub
猜你喜欢
  • 1970-01-01
  • 2013-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-16
  • 1970-01-01
  • 2017-10-24
  • 1970-01-01
相关资源
最近更新 更多