Excel VBA宏读取具有不同文本的一列

时间:2018-07-27 18:17:16

标签: excel string vba

我的任务是创建一个代码,该代码将检查Excel电子表格中的内部超链接是否有效。此代码首先更改电子表格上的公式,并使它们成为实际的超链接(它们最初是将位置链接在一起的公式)。我现在遇到的问题是,如果列S具有文本,我想仅创建超链接。如果没有,我不希望显示“ E-COPY”文本。 S列中的所有文本都是变化的(没有一行具有相同的字符),这就是为什么我要空白的原因,是我告诉程序仅在有任何文本而不是任何特定内容的情况下才继续。我正在使用Excel 2016。

此外,我正在对71935执行此操作并计算行数;可以通过的数量有限制吗?如果是这样,我该怎么办?

谢谢!

Sub CreateHyperlinks()
Dim FN As Variant

Dim Path As Variant
Dim count As Variant

Sheets(1).Activate
count = WorksheetFunction.CountA(Sheets(1).Range("A:A"))


For i = 2 To count

If Range("AM" & i).Value = "Yes" And Columns("S") =  Then 
Range("E" & i).Value = ""

Path = Sheets(1).Range("R" & i).Value
FN = Sheets(1).Range("S" & i).Value


    Sheets(1).Range("E" & i).Select
    Selection.ClearFormats
    Selection.Hyperlinks.Add Anchor:=Selection, Address:=Path & FN, TextToDisplay:="E-COPY"

    Range("AM" & i).Value = " "

End If

Next i


End Sub

2 个答案:

答案 0 :(得分:2)

如果您只需要检查ColS中的任何内容,则:

If Range("AM" & i).Value = "Yes" And Len(Range("S" & i).Value) > 0 Then

答案 1 :(得分:2)

几件事:

'make a reference to the sheet you're working with
Dim ws As Worksheet
Dim wb As Workbook

Set wb = Excel.Application.ThisWorkbook
Set ws = wb.Worksheets(1)

'gets the absolute last row with data in it // ignores empty cells
count = ws.UsedRange.Rows.Count

我个人不喜欢使用命名范围,所以我建议像这样设置范围引用

你写了什么

Path = Sheets(1).Range("R" & i).Value

我认为它应该是什么样子

Path = ws.Cells(i, 18).Value

如果要在使用变体时测试类型,请尝试以下操作:

'tests the type associated with the variant. an 8 = string
If VarType(ws.Cells(i, 19).Value) = 8 Then
    'do your thing

'tests if the value is null
ElseIf VarType(ws.Cells(i, 19).Value) = 0 Then
    'do your other thing

here's可变类型枚举列表以帮助您。

希望有帮助!