需要设置一个 Sheet 以便代码工作,无论我在 sheet

Need to set a Sheet so code works, regardless of what sheet I am on

我用它来拆分 facebook url,如果我在 SHEET 上,它工作正常。我现在将从用户表单中 运行 并且 sheet 将不再可见或活动 sheet。我一直在尝试设置 sheet,因此无论 sheet 处于活动状态,它仍然可以工作。但是我正在努力这样做。

问)有人可以帮我设置工作sheet“Facebook”吗? (因此无论 sheet 处于活动状态如何,这都会影响用户表单)

我已经注释掉了我的尝试,我也尝试过使用 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

只需确保 每个 RangeCellsRowsColumns 对象都被工作簿和工作表引用喜欢

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))

将此技术应用于所有 您的代码,无论哪个工作表或工作簿处于活动状态,它都将可靠地工作。