我用它来分割 facebook url,如果我在工作表上,它工作正常。我现在将从用户表单运行它,并且工作表将不再可见或活动工作表。我一直在尝试设置工作表,因此无论工作表处于活动状态,它仍然可以工作。但是我正在努力做到这一点。
Q) 有人可以帮我设置工作表“Facebook”吗? (因此,无论哪个工作表处于活动状态,都可以在用户表单之外工作)
我已经注释掉了我的尝试,我也尝试过使用 With Sheet
但似乎对我没有任何作用
Dim i As Long, j As Long
Dim va, x, z
'Dim wb As Workbook: Set wb = ThisWorkbook
'Dim va As Worksheet
'Set va = wb.Sheets("Facebook")
va = Range("A2", Cells(Rows.Count, "A").End(xlUp))
On Error GoTo skip:
For i = 1 To UBound(va, 1)
x = va(i, 1)
If Right(x, 1) <> "/" Then x = x & "/"
If InStr(x, "/posts/") Or InStr(x, "/about/") Then
z = Split(x, "/")
For j = LBound(z) To UBound(z)
If z(j) = "posts" Or z(j) = "about" Then x = "https://www.facebook.com/" & z(j - 1) & "/about":
Exit For
Next
End If
If InStr(x, "/category/") Then
z = Split(x, "/")
For j = LBound(z) To UBound(z)
If z(j) = "category" Then x = "https://www.facebook.com/" & z(j + 2) & "/about":
Exit For
Next
End If
va(i, 1) = x
Next
ws.Range("B2").Resize(UBound(va, 1), 1) = va
Exit Sub
skip:
MsgBox "Error number " & Err.Number & " : " & Err.Description & vbLf _
& "Problem at row :" & i + 1 & vbLf & va(i, 1)
'End With
答案 0 :(得分:1)
只要确保每个 Range
、Cells
、Rows
和 Columns
对象都被类似的工作簿和工作表引用
va = ThisWorkbook.Worksheets("Sheet1").Range("A2", ThisWorkbook.Worksheets("Sheet1").Cells(ThisWorkbook.Worksheets("Sheet1").Rows.Count, "A").End(xlUp))
否则 Excel 无法知道您指的是哪个工作簿和工作表,通常会采用活动工作表(这可能不是您想要的工作表)。
这里 With
块或变量可以方便地缩短它:
With ThisWorkbook.Worksheets("Sheet1")
va = .Range("A2", .Cells(.Rows.Count, "A").End(xlUp))
End With
或者如果您需要使用不同的工作表,您最好使用类似
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1")
va = ws.Range("A2", ws.Cells(ws.Rows.Count, "A").End(xlUp))
将此技术应用于所有您的代码,无论哪个工作表或工作簿处于活动状态,它都能可靠地工作。