返回列表 上一主題 發帖

[發問] 家裡使用時可以,到了公司就不行,

本帖最後由 singo1232001 於 2023-12-8 03:16 編輯

回復 1# av8d


1.    除錯 時 先註掉 on error resume next

2. Workbooks.Open (ThisWorkbook.Path & "\" & FN) '開啟該檔案  會實際依照"windows資料夾開啟副檔名設定" 判斷資料  例如.xlsx  找檔案
如果沒開 你的寫法是正確的
若開副檔名 程序就找不到檔案

3.或者先用dir寫 if判斷 找先判斷檔案在不在 不再就 else 加上有副檔名的找
dir的方式問GPT

TOP

回復 2# singo1232001


    Workbooks.Open (ThisWorkbook.Path & "\" & FN)  
直接改成
Workbooks.Open  (ThisWorkbook.Path & "\" & FN & ".xlsx")
試試看

TOP

在on error resume next
這種錯了又錯的情況很容易發生

所以都會連續使用
on error resume next
........
err.clear
on error goto 0

的方式來強制忽略錯誤後
避免後方又出錯沒找到問題
在當程序的量大到一定程度 這是必用上的技術

另外當 有時候on error resume next 後
遇到錯誤 就必須歸零 避免程序又錯
例如
on error resume next
in isobect(ar) then err.clear:on error go to 0 :exit sub
err.clear:on error go to 0
...
...

TOP

回復 6# av8d


    Private Sub CommandButton1_Click()
'暫停四個容易拖慢的 Excel 功能
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
'Application.EnableEvents = False
'On Error Resume Next
    '更新活頁簿:市民卡日報表
    FN = "市民卡日報表" '檔案名稱
    Set FNwb = Workbooks.Open(ThisWorkbook.Path & "\" & FN)  '開啟該檔案
   
    CB = Left(ComboBox1, Len(ComboBox1) - 3) '所設定的日期
    'yTD = Format(CB, "yyyy") - 1911
    mTD = Format(CB, "m")
    dTD = Format(CB, "d")
    FNTD = mTD & "月"

    Dim FNcell As Range
    For Each Z In FNwb.Sheets(FNTD).Range("C2:CM2")
    If Z.Value = Int(Format((DateValue(CB)), 0)) Then
    Set FNcell = Z
    Exit For
    End If
    Next
   
   
    ActiveWindow.ScrollColumn = FNcell.Column - 15
    ActiveWindow.ScrollRow = FNcell.Row - 1
   
    If Not FNcell Is Nothing Then
        FNcell.Offset(1, 0).Select
        For m = 7 To 12
            For n = 1 To 4
                ActiveCell.Offset(m, n - 1) = Cells(m + 5, n * 2)
            Next
        Next
        For m = 19 To 24
            For n = 1 To 4
                ActiveCell.Offset(m, n - 1) = Cells(m, n * 2)
            Next
        Next
        ActiveCell.Offset(-1, 0).Select
        
        '更新[歷史合計]
        Dim i As Integer, j As Integer
        '當日合計貼到歷史合計B4:B9
        For i = 4 To 9
            Cells(i, 2) = Cells(i + 8, 4)
        Next
        '當日合計貼到歷史合計D4:D9
        For i = 4 To 9
            Cells(i, 4) = Cells(i + 8, 8)
        Next
        '當日合計貼到歷史合計F4:F9
        For i = 4 To 9
            Cells(i, 6) = Cells(i + 15, 4)
        Next
        '當日合計貼到歷史合計H4:H9
        For i = 4 To 9
            Cells(i, 8) = Cells(i + 15, 8)
        Next
        '清除[當日合計]
        For i = 2 To 8 Step 2
            For j = 12 To 17
                Cells(j, i) = ""
            Next
        Next
        For i = 2 To 8 Step 2
            For j = 19 To 24
                Cells(j, i) = ""
            Next
        Next
        [K3:O15].ClearContents
        [J20].ClearContents
    Else
        MsgBox "在【市民卡日報表】中找不到 " & CB & " ,動作終止。"
    End If

'恢復四個容易拖慢的 Excel 功能
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.DisplayStatusBar = True
'Application.EnableEvents = True
End Sub

TOP

        靜思自在 : 知識要用心體會,才能變成自己的智慧。
返回列表 上一主題