Board logo

標題: [發問] 請教如何讓VBA自動將空白處自動填入數字0 ? [打印本頁]

作者: jonn0510    時間: 2012-6-18 18:06     標題: 請教如何讓VBA自動將空白處自動填入數字0 ?

請教各位大大:

若A1~A8的數字如下
A1  A2  A3  A4  A5  A6  A7  A8
       2    5         1    1         4
其中A1.A4.A7這3各儲存格式空白的,請問如何讓VBA自動將空白處自動填入數字0 ? 謝謝

希望能藉由VBA判斷後,自動填入
A1  A2  A3  A4  A5  A6  A7  A8
  0   2    5    0    1    1   0    4
作者: register313    時間: 2012-6-18 21:58

回復 1# jonn0510
  1. Sub yy()
  2. On Error Resume Next
  3. [A1:A8].SpecialCells(xlCellTypeBlanks) = 0
  4. End Sub
複製代碼

作者: jonn0510    時間: 2012-6-19 05:56

回復 2# register313

register313 大大:
OK!感謝您的指導,謝謝您.
作者: GBKEE    時間: 2012-6-19 07:55

On Error Resume Next 程式中會不易除錯
  1. Sub Ex()
  2.     If [COUNTA(A1:A8)] <> [A1:A8].Count Then [A1:A8].SpecialCells(xlCellTypeBlanks) = 0
  3.     '工作表函數 COUNTA(A1:A8) : 計算範圍內有資料的數目
  4.     '[A1:A8].Count  VBA:Count 屬性 傳回一個 Long (長整數),等於在一個集合物件中的物件數目。唯讀。
  5.     'SpecialCells 方法  傳回Range 物件,此物件代表與指定型態及值相符合的所有儲存格。Range 物件。
  6. End Sub
複製代碼

作者: freeffly    時間: 2012-6-19 08:37

回復 4# GBKEE


    原來可以使用[]這種方式
   我可能會認為COUNTA(A1:A8)這種用法出錯是因為沒辦法用那種方式處理

   出現必須":清單分除字元或是)" 這種字眼時如果沒有錯誤還真的不知道如何解決
作者: oobird    時間: 2012-6-19 09:19

[a1:a8].Replace "", "0", 1
作者: freeffly    時間: 2012-6-19 09:26

回復 6# oobird


    版主你的程式碼運行沒出現錯誤但是不會有0
    這種replace沒看過
   有什麼條件嗎
   我在一個空白工作表執行
   正常A1:A8都會為0可是還是空白
作者: oobird    時間: 2012-6-19 09:47

回復 7# freeffly
[attach]11443[/attach]
作者: GBKEE    時間: 2012-6-19 09:48

本帖最後由 GBKEE 於 2012-6-19 09:51 編輯

回復 7# freeffly
可參考者裡

這選項 有勾選嗎?

[attach]11442[/attach]
作者: freeffly    時間: 2012-6-19 09:59

本帖最後由 freeffly 於 2012-6-19 10:01 編輯

回復 8# oobird


    我知道差在哪了
  我的A1:A8都是空白
  我以為會都取代為0

回復 8# GBKEE
我的那邊是打勾的
原來那邊如果取消會看不到0
一直沒去試
謝謝
作者: oobird    時間: 2012-6-19 10:12

回復 10# freeffly

我也知道你的問題在哪了
這裡的REPLACE是方法不是函數,你必須在使用過的工作表使用
若新開一個檔案,沒做過任何輸入是不會執行的
可在任何大於第8列的位置輸入任何東西,刪除了也沒關係,就會被辨識及執行。
作者: freeffly    時間: 2012-6-19 10:37

回復 11# oobird

版主
情形很怪
一開始我是再A1:A8的隨便區域裡面打一兩各數字
剛剛是再第8列且第一欄以外的地方輸入資料
結果如附檔
   



[attach]11444[/attach]
作者: GBKEE    時間: 2012-6-19 10:38

回復 11# oobird
If [COUNTA(A1:A8)] <> [A1:A8].Count Then [A1:A8].SpecialCells(xlCellTypeBlanks) = 0
SpecialCells 一樣在新工作表 未有輸入時 會有錯誤,也需在大於 A8 的地方有輸入,才會 得到完整的資料
作者: freeffly    時間: 2012-6-19 10:50

回復 13# GBKEE


    版主可以請教一個問題嗎
   replace方法 跟函數的差異?
    你另一篇是用函數
  不過O版主說他的是方法
  看起來很像
  我以為只差在()
作者: GBKEE    時間: 2012-6-19 11:03

回復 14# freeffly
Replace方法  : => 工作表指令"取代" ,  儲存格文字的替換  
Replace函數  :  文字字串的替換
傳回一個字串,該字串中指定的子字串已被取代成另一子字串,並且取代發生的次數也是指定的。
作者: freeffly    時間: 2012-6-19 11:19

回復 15# GBKEE
回復 15# oobird


    剛發現使用o版主的方式如果是舊檔案新工作表
   新工作表必須使用過
   而其他不是選擇中的工作表(已經使用過的工作表)竟然也套用方法

   所以方法是針對整各儲存格(或者說整檔案中的工作表的儲存格)
       函數是針對儲存格裡面的字串去替換
   不知道我的理解有沒有錯誤
   
   感覺方法使用上好像變成侷限在少數情形




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