Board logo

標題: [發問] 家裡使用時可以,到了公司就不行, [打印本頁]

作者: av8d    時間: 2023-12-6 21:12     標題: 家裡使用時可以,到了公司就不行,

本帖最後由 av8d 於 2023-12-6 21:16 編輯

[attach]37113[/attach][attach]37111[/attach]

求救,
家裡 Excel版本 Office 2019 標準版
公司 Excel版本 Office 家用及中小企業專業版2021

使用方法:開啟發卡統計,按壓中間上方的"更新合計",
家裡使用時正常,會在指定日期填入值,
公司使用時錯誤,會找不到指定日期,我本身有寫找不到出現"在【市民卡日報表】中找不到"

不知道是哪裡出問題,還是說兩個版本設定上有問題,目前一頭霧水,還請知道的前輩幫忙,謝謝!
作者: singo1232001    時間: 2023-12-8 03:14

本帖最後由 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
作者: singo1232001    時間: 2023-12-8 14:01

回復 2# singo1232001


    Workbooks.Open (ThisWorkbook.Path & "\" & FN)  
直接改成
Workbooks.Open  (ThisWorkbook.Path & "\" & FN & ".xlsx")
試試看
作者: av8d    時間: 2023-12-9 01:59

回復 3# singo1232001

感謝前輩解答,學習到了更嚴謹的撰寫方法,受用無窮。
作者: singo1232001    時間: 2023-12-9 09:59

在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
...
...
作者: av8d    時間: 2023-12-12 22:01

本帖最後由 av8d 於 2023-12-12 22:05 編輯

回復 5# singo1232001

謝謝前輩,再次發生了錯誤(我有加入.xlsm),找了多日,沒有發現解決方法,謝謝前輩抽空觀看。

使用方法,將隨意數值填入K4:K15,按J2的發卡,數值會自動出現在左邊,即可按上方中間的按鈕"更新合計",
第一次使用會正確填入,存檔後,關閉,第二次使用,就會找不到日期,

嘗試打開市民卡日報表使用Ctrl+F搜尋,發現無法搜尋十位數以上的日期,例:12/11、12/23...等
作者: singo1232001    時間: 2023-12-12 23:02

回復 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
作者: av8d    時間: 2023-12-13 22:11

回復 7# singo1232001

謝謝前輩,受益良多,我會努力學習前輩所撰寫的原理,解決了我一個大難題。
作者: av8d    時間: 2023-12-13 23:06

回復 7# singo1232001

補充說明:

前輩您好,我發現
Workbooks(FN).Sheets(FNTD).Activate
這段要留著,換月的時候才抓地到,再次感謝前輩解決難題。




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)