Board logo

標題: [發問] 請教如何只刪除儲存格內的數值 而不刪除公式 [打印本頁]

作者: vic    時間: 2015-7-10 12:50     標題: 請教如何只刪除儲存格內的數值 而不刪除公式

想請教一下
我在網路上參考的清除指令如下
  1. Sub 清除()
  2. Beep
  3. If MsgBox("※確定要清除〔資料圖表區〕的記錄嗎? ", 4 + 32 + 256) = vbNo Then Exit Sub
  4. Call 共用使用
  5. Sht1.Rows("19:65536").ClearContents
  6. If ActiveSheet.Name = Sht1.Name Then ActiveWindow.ScrollRow = 1
  7. Beep
  8. End Sub
複製代碼
這個會將我Row 19以下的數值含公式全部刪除
不過我在(K19,K319)及(N19,N319)內有寫入簡單的公式
可以修改成只刪除數值不刪除公式嗎?
請問如何修改
作者: lpk187    時間: 2015-7-10 13:56

回復 1# vic

不可能只刪值而不刪公式的!因為公式所參照的儲存格有值的話,你的公式畢竟會顯示值出來。
所以一般不讓其值顯示大多數會利 用IF函數來幫助判斷,來讓公式儲存格顯示空白,
例如:
原來的C1=A1+B1可以寫成
    C1=IF(OR(A1="",B1=""),"",A1+B1)'當A1和B1皆是空白時C1=空白,否則C1=A1+B1
然後在VBA中只刪除A1和B1,這樣就可以達到類似你要的模式了。
作者: jackyq    時間: 2015-7-10 15:02

既然是 清除〔資料圖表區〕的記錄
那把圖表的參照範圍改到其他空白區
如何呢?
作者: GBKEE    時間: 2015-7-11 05:42

回復 1# vic
  1. Sub 清除()
  2.     Beep
  3.     If MsgBox("※確定要清除〔資料圖表區〕的記錄嗎? ", 4 + 32 + 256) = vbNo Then Exit Sub
  4.     Call 共用使用
  5.     With Sht1.Rows("19:65536")
  6.         On Error Resume Next     '程式上有錯誤,繼續執行下一行的程式程式碼
  7.         'SpecialCells(特殊儲存格),xlCellTypeConstants。包含常數的儲存格
  8.         '沒有指定的SpecialCells,會有程式上的錯誤
  9.         .SpecialCells(xlCellTypeConstants) = ""
  10.         On Error GoTo 0    '不處理程式上的錯誤
  11.     End With
  12.     If ActiveSheet.Name = Sht1.Name Then ActiveWindow.ScrollRow = 1
  13.     Beep
  14. End Sub
複製代碼

作者: vic    時間: 2015-7-11 22:11

回復 4# GBKEE

太感謝了 我原本也試過用(xlCellTypeConstants, 23)
不過也是如果儲存格有值的時候執行會成功,
清除後再執行就發生錯誤~感謝您

也感謝其他大大熱心的提供意見




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