Board logo

標題: [發問] 請問是否能禁止新增sheet的方式 [打印本頁]

作者: z71078170    時間: 2015-11-27 07:50     標題: 請問是否能禁止新增sheet的方式

因需要讀取A檔案第一個sheet的內容
故不想讓使用者在A檔案新增其他sheet
若移動sheet順序,導致程式錯誤
目前只有想到如果可以禁止新增其他sheet就能解決!
各位大大怎麼看?
作者: GBKEE    時間: 2015-11-27 08:36

回復 1# z71078170

[attach]22630[/attach]

試試看
  1. Option Explicit
  2. Private Sub Workbook_NewSheet(ByVal Sh As Object)
  3.     Application.DisplayAlerts = False
  4.     Sh.Delete
  5.     Application.DisplayAlerts = True
  6. End Sub
複製代碼

作者: c_c_lai    時間: 2015-11-27 09:34

回復 2# GBKEE
請教您!
如此重複地執行 Sh.Delete,
會不會造成 Excel 內部堆壘的
負荷?
作者: GBKEE    時間: 2015-11-27 10:09

回復 3# c_c_lai
會的 ,但要執行5000 多次後.
  1. Option Explicit
  2. Private Sub Workbook_NewSheet(ByVal Sh As Object)
  3.     Application.DisplayAlerts = False
  4.     Debug.Print Sh.Name
  5.     Sh.Delete
  6.     Application.DisplayAlerts = True
  7. End Sub
  8. Sub Ex()
  9.     Dim I As Long
  10.     On Error Resume Next
  11.     Do
  12.         Debug.Print I
  13.         I = I + 1
  14.         DoEvents
  15.         Sheets.Add Sheets(1)
  16.     Loop
  17. End Sub
複製代碼

作者: 准提部林    時間: 2015-11-27 12:17

保護活頁簿較實在,
NewSheet應該無法偵測工作表複製~~
作者: stillfish00    時間: 2015-11-27 13:38

本帖最後由 stillfish00 於 2015-11-27 13:39 編輯

回復 1# z71078170
可以不要用順序來讀取該工作表內容
你可以看該工作表的屬性視窗
例如
(Name)屬性為XXX
Name屬性為YYY

可以用 XXX.Range("A1")
或用 Sheets("YYY").Range("A1")
作者: z71078170    時間: 2015-11-27 17:23

目前先使用 GBKEE大大的方式,目前方式使用上沒有問題,謝謝
倘若改為工作表的屬性視窗判別順序
許多程式要修改了XD
最近比較忙一些,打算未來有空閒一點 在更正
謝stillfish00指點
作者: jackyq    時間: 2015-11-27 17:54

本帖最後由 jackyq 於 2015-11-27 17:57 編輯

回復 3# c_c_lai


大大好
完全不會有堆疊負荷問題




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