簡體   English   中英

在所有工作表中自動打開Excel文件到單元格A1(使用VBA)

[英]Automatically open an excel file to cell A1 in all worksheets (using VBA)

我正在嘗試編寫VBA代碼,這樣每當我打開excel中的任何文件時,它會自動轉到所有工作表中的Cell A1(無論上次保存時選擇了哪些單元格)。 我在網上發現了一些建議在我的Personal .xlsb項目中添加以下代碼:

Sub kTest()

    Dim i As Long, s() As String, a As String, n As Long

    With ActiveWorkbook
        For i = 1 To .Worksheets.Count
            a = a & .Worksheets(i).Name
            n = n + 1
            ReDim Preserve s(1 To n)
            s(n) = .Worksheets(i).Name
            If Len(a) > 224 Then
                .Worksheets(s).Select
                .Worksheets(s(1)).Activate
                [a1].Select
                n = 0: a = "": Erase s
            End If
        Next
        If Len(a) Then
            .Worksheets(s).Select
            .Worksheets(s(1)).Activate
            [a1].Select
        End If
        Application.Goto .Worksheets(1).Range("a1")
    End With

End Sub

但是當我打開文件時沒有任何反應。 請幫忙!

你不能在每張表中轉到Cell A1。 但是,如果您想要單張表格的單元格A1,您可以執行以下操作。

使用以下代碼創建一個ExcelEvents類

Option Explicit

Private WithEvents App As Application

Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
    App.Goto Wb.Worksheets(1).Range("A1")
End Sub

Private Sub Class_Initialize()
    Set App = Application
End Sub

並在ThisWorkbook中添加

Option Explicit

Private xlApp As ExcelEvents

Private Sub Workbook_Open()
    Set xlApp = New ExcelEvents
End Sub

保存工作簿,重新打開它,workbook_open事件中的代碼將運行,這意味着一旦打開另一個工作簿,代碼將轉到工作表1的單元格A1

編輯如果您真的想在每張表中選擇A1,您可以按如下方式更改代碼

Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
Dim sh As Worksheet
    App.ScreenUpdating = False
    For Each sh In Wb.Worksheets
        sh.Select
        sh.Range("A1").Select
    Next
    App.Goto Wb.Worksheets(1).Range("A1")
    App.ScreenUpdating = True
End Sub

簡單的解決方案:

    For Each Sheet In ActiveWorkbook.Worksheets
        Sheet.Select
        Range("A1").Select
    Next

在工作表中使用MicScoPau循環將以下代碼放在Personal.xlsb的ThisWorkbook模塊中:您必須重新打開excel才能使其首次運行。 如果您的Personal.xlsb被隱藏,那么您將在activeworkbook中的每個工作表中遇到一些問題。

Private WithEvents app As Application

Private Sub app_WorkbookOpen(ByVal Wb As Workbook)
    For Each Sheet In ActiveWorkbook.Worksheets
        Sheet.Select
        Range("A1").Select
    Next
End Sub

Private Sub Workbook_Open()
  Set app = Application
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM