簡體   English   中英

Excel VBA,下標超出范圍

[英]Excel VBA , subscript out of range

所以我開始寫一個將從Workbook1 UserForm寫入WorkBook2工作表的代碼。 由於某些未知原因,它沒有復制數據。

Private Sub CommandButton1_Click()
  On Error GoTo ErrHandler
  Application.ScreenUpdating = False
  Dim src As Workbook
   ' Open EXCEL
Set src = Workbooks.Open("U:\Mecânica\Produção\63177 - Qualidade\Rejeição Interna\Dados\Gaspar\Projeto Manutenção.xlsm", True, False)
WS_Count = src.Worksheets.Count
For o = 1 To WS_Count
 src.Worksheets(o).Unprotect password:="projmanutencao"
Next o

last = src.Worksheets(Manutencao).Range("A65536").End(xlUp).Row

    ' Write regists

   src.Worksheets(Manutencao).Cells(last + 1, 1) = Now()                        'data
   src.Worksheets(Manutencao).Cells(last + 1, 2) = manutencaoexp.ComboBox3      'nº equipamento
   src.Worksheets(Manutencao).Cells(last + 1, 3) = manutencaoexp.ComboBox5                          'avaria
   src.Worksheets(Manutencao).Cells(last + 1, 4) = manutencaoexp.ComboBox4      'serviços
'      src.Worksheets(Manutencao).Cells(last + 1, 5) = Velocidade                   'produtos
'      src.Worksheets(Manutencao).Cells(last + 1, 6) = Qualidade                    'duração
'      src.Worksheets(Manutencao).Cells(last + 1, 7) = Data                         'operario
   src.Worksheets(Manutencao).Cells(last + 1, 8) = manutencaoexp.ComboBox6      'tipo de manutenção

      For o = 1 To WS_Count
 src.Worksheets(o).Protect password:="projmanutencao"
 Next o


  Application.DisplayAlerts = False 'IT WORKS TO DISABLE ALERT PROMPT

  'SAVES FILE USING THE VARIABLE BOOKNAME AS FILENAME
  src.Save

  Application.DisplayAlerts = True 'RESETS DISPLAY ALERTS

' CLOSE THE SOURCE FILE.
src.Close True             ' FALSE - DON'T SAVE THE SOURCE FILE.
Set src = Nothing



ErrHandler:
Application.EnableEvents = True
Application.ScreenUpdating = True

End Sub

如果有人可以幫助修復這段代碼,或者擁有從不同工作簿用戶表單中復制的代碼。 我的下標超出范圍錯誤

last = src.Worksheets(Manutenção).Range("A65536").End(x1Up).Row

假設“ Manutencao”是工作表名稱,然后將此行更改為:

last = src.Worksheets("Manutencao").Range("A65536").End(xlUp).Row

注意工作表名稱周圍的"" 無論您在哪里引用此工作表,都必須更改此設置。

編輯:您的代碼可以像這樣重寫,更清晰一些;

Private Sub CommandButton1_Click()
    Dim src As Workbook
    Dim last As Long

    On Error GoTo ErrHandler

    With Application
        .ScreenUpdating = False
        .DisplayAlerts = False
        .EnableEvents = False
    End With

    Set src = Workbooks.Open("U:\Mecânica\Produção\63177 - Qualidade\Rejeição Interna\Dados\Gaspar\Projeto Manutenção.xlsm", True, False)

    With src.Worksheets("Manutencao")
        .Unprotect Password:="projmanutencao"
        last = .Cells(Rows.Count, "A").End(xlUp).Row
        .Cells(last + 1, 1) = Now()                        'data
        .Cells(last + 1, 2) = manutencaoexp.ComboBox3      'nº equipamento
        .Cells(last + 1, 3) = manutencaoexp.ComboBox5                          'avaria
        .Cells(last + 1, 4) = manutencaoexp.ComboBox4      'serviços
'        .Cells(last + 1, 5) = Velocidade                   'produtos
'        .Cells(last + 1, 6) = Qualidade                    'duração
'        .Cells(last + 1, 7) = Data                         'operario
        .Cells(last + 1, 8) = manutencaoexp.ComboBox6      'tipo de manutenção
        .Protect Password:="projmanutencao"
    End With
    src.Close True             ' FALSE - DON'T SAVE THE SOURCE FILE.
    Set src = Nothing

ErrHandler:
    If Err Then
        Debug.Print "Error", Err.Number, Err.Description
        Err.Clear
    With Application
        .EnableEvents = True
        .ScreenUpdating = True
        .DisplayAlerts = True
    End With
End Sub

暫無
暫無

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

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