返回列表 上一主題 發帖

vba 此處需要物件 (錯誤 424)

vba 此處需要物件 (錯誤 424)

請問
我設定data陣列中的索引值為欲刪除的工作表名稱
並希望用for迴圈與if來判斷所指定的工作表是否存在
若存在則刪除
若不存在則跳出if到for 使其重新判斷
執行時在  If s1.Name = data Then   這一行發生錯誤
出現  此處需要物件 (錯誤 424)
該如何修改程式碼呢
程式碼如下所示
十分感謝

Public Sub 刪除多餘工作表()
    data = Array("資料1", "資料2", "資料3", "資料4", "資料5", "資料6", "資料7", "資料8", "連結0", "連結1", "連結2", _
    "連結3", "連結4", "連結5", "連結6", "連結7", "連結8", "連結9", "SERIES及PF比較可列印", "SERIES 比較貼上", _
         "記錄表轉換標籤", "來年紀錄可貼上")
    For s1 = 0 To 21
    If s1.Name = data Then
    Application.DisplayAlerts = False
    s1.Delete '刪除s1
    Application.DisplayAlerts = True
    End If
    Next
End Sub

回復 2# mark15jill

您好
這好像是針對刪除單一工作表

TOP

回復 4# koo


For i = Sheets.Count To 1 Step -1  '請問此行是否將工作表最大值-1
    For J = LBound(data) To UBound(data) '此行是否將所設的陣列變數帶入 找出最大到最小
        If Sheets(i).Name = data(J) Then '再比對工作表與陣列變數
            Application.DisplayAlerts = False '若一樣則關閉警告視窗
            Sheets(i).Delete'並刪除
            Application.DisplayAlerts = True '再將警告視窗打開

請問我這樣理解對嗎

TOP

回復 5# c_c_lai


不好意思
小妹新手上路
對於邏輯不是那麼能以理解

    aList$ '請問這是宣告要放字串的地方嗎
    aList = Join(Data, ",")'好像是透過自我定義的陣列變數中傳回多個字串
    For ts = Sheets.Count To 1 Step -1 '將工作表的最大值-1
        If InStr(aList, Sheets(ts).Name) Then '當陣列變數中的字串等於工作表的名稱時
           Sheets(ts).Delete                 '  刪除該工作表
        End If
    Next
    Application.DisplayAlerts = True'for迴圈跑完即把警告視窗打開


請問我這樣的解釋對嗎

TOP

回復 9# c_c_lai

清楚且明瞭

十分感恩c大

TOP

        靜思自在 : 忘功不忘過,忘怨不忘恩。
返回列表 上一主題