返回列表 上一主題 發帖

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

回復 1# t591nm
  1. For s1 = 0 To 21
  2.     If s1.Name = data Then
  3.         .
  4.         .
  5.     End If
  6. Next
複製代碼
s1 並非是物件,它在這裡扮演的是 0 到 21 的整數值變數,
所以在執行時,會產生 "此處需要物件 (錯誤 424)" 的訊息。
接下來更離譜的是  s1.Delete ' 刪除s1 ???

應用你寫的程式碼稍加修改,請自行測試:
  1. Sub 刪除多餘工作表()
  2.     Dim ts As Integer, aList$
  3.    
  4.     Data = Array("資料1", "資料2", "資料3", "資料4", "資料5", "資料6", "資料7", "資料8", "連結0", "連結1", "連結2", _
  5.           "連結3", "連結4", "連結5", "連結6", "連結7", "連結8", "連結9", "SERIES及PF比較可列印", "SERIES 比較貼上", _
  6.           "記錄表轉換標籤", "來年紀錄可貼上")
  7.     aList = Join(Data, ",")

  8.     Application.DisplayAlerts = False

  9.     For ts = Sheets.Count To 1 Step -1
  10.         If InStr(aList, Sheets(ts).Name) Then
  11.            Sheets(ts).Delete                 '  刪除欲刪除的工作表
  12.         End If
  13.     Next
  14.    
  15.     Application.DisplayAlerts = True
  16. End Sub
複製代碼

TOP

回復 8# t591nm
  1. Sub 刪除多餘工作表()
  2.     Dim ts As Integer, aList$  
  3.     ' aList$ 這是字串宣告, 等於宣告成  aList As String
  4.    
  5.     Data = Array("資料1", "資料2", "資料3", "資料4", "資料5", "資料6", "資料7", "資料8", "連結0", "連結1", "連結2", _
  6.           "連結3", "連結4", "連結5", "連結6", "連結7", "連結8", "連結9", "SERIES及PF比較可列印", "SERIES 比較貼上", _
  7.           "記錄表轉換標籤", "來年紀錄可貼上")
  8.     '  Example :  Data 陣列變數 Data(0) ~ Data(21) 的存放內容值。
  9.     '  Data :  :  Variant/Variant(0 to 21)
  10.     '  Data(0) :  "資料1" : Variant/String
  11.     '  Data(1) :  "資料2" : Variant/String
  12.     '  Data(2) :  "資料3" : Variant/String
  13.     '  .
  14.     '  .
  15.     '  .
  16.     '  Data(20) : "記錄表轉換標籤" : Variant/String
  17.     '  Data(21) : "來年紀錄可貼上" : Variant/String
  18.    
  19.     aList = Join(Data, ",") '  集合陣列 Data 內容,並以 "," 作為分隔符號。結果如下:
  20.     '  aList = "資料1,資料2,資料3,資料4,資料5,資料6,資料7,資料8,連結0,連結1,連結2,連結3,連結4,連結5,連結6,連結7,連結8,連結9,SERIES及PF比較可列印,SERIES 比較貼上,記錄表轉換標籤,來年紀錄可貼上" : String
  21.    
  22.     Application.DisplayAlerts = False
  23.      
  24.     For ts = Sheets.Count To 1 Step -1
  25.         '  如果 aList 字串中有符合該表單名稱者,則予以刪除。
  26.         '  譬如:該表單名稱為 "記錄表轉換標籤",則比對結果發現該 aList 字串中有此字串名稱。
  27.         '        則直接逕行刪除;否則比對不成功則不處理。
  28.         If InStr(aList, Sheets(ts).Name) Then
  29.            Sheets(ts).Delete                 '  刪除欲刪除的工作表
  30.         End If
  31.     Next
  32.    
  33.     Application.DisplayAlerts = True
  34. End Sub
複製代碼

TOP

        靜思自在 : 有多少力量就做多少事,不要心存等待,等待才會落空。
返回列表 上一主題