Board logo

標題: [發問] (已解決)如何搭配的儲存格數量不同自動新增對應的工作表 [打印本頁]

作者: freeffly    時間: 2011-4-22 12:27     標題: (已解決)如何搭配的儲存格數量不同自動新增對應的工作表

本帖最後由 freeffly 於 2012-2-22 17:04 編輯

VBA要怎麼修才能判斷當工作表的數量與要搭配的儲存格數量不同時,會自動新增對應的工作表?
如A40之後再增加”個17~個22”要怎麼寫VBA讓VBA自己增加這些工作表?



[attach]5736[/attach]
作者: GBKEE    時間: 2011-4-22 15:18

回復 1# freeffly
  1. Sub Ex()
  2.     Dim R As Range
  3.     On Error GoTo Out:
  4.     With Sheets("彙總")
  5.         For Each R In .Range("B:B").SpecialCells(xlCellTypeFormulas, xlErrors) '處裡B欄中公式有錯誤值的儲存格
  6.             With Sheets.Add
  7.                 .Name = R.Offset(, -1).Text
  8.                 .[a1] = R.Offset(, -1).Text
  9.             End With
  10.         Next
  11.         .Activate
  12.     End With
  13. Out:
  14. End Sub
複製代碼

作者: freeffly    時間: 2011-4-23 15:03

回復 2# GBKEE


    大大你的方法好像只有在B欄公式有問題時才處理
  可以在A欄有資料B欄空白或是公式有問題處理?
   原本我的思維是判斷那些儲存格數量跟工作表數量去做迴圈
  可惜我寫出來會有問題,大大的方式也提供了我不同的思考
  先謝謝!
作者: GBKEE    時間: 2011-4-23 17:38

回復 3# freeffly
A欄有資料
  1. Sub Ex()  '處裡A欄有資料的儲存格
  2.     Dim R As Range
  3.     With Sheets("彙總")
  4.         For Each R In .Range("A:A").SpecialCells(xlCellTypeConstants)
  5.             On Error Resume Next
  6.             Sheets(R.Text).Activate
  7.             If Err > 0 Then
  8.                 With Sheets.Add
  9.                     .Name = R.Text
  10.                     .[a1] = R.Text
  11.                 End With
  12.                 Err.Clear
  13.             End If
  14.         Next
  15.         .Activate
  16.     End With
  17. End Sub
複製代碼

作者: freeffly    時間: 2011-4-23 18:52

回復 4# GBKEE

看了大大這兩個例子又讓我學到一些
跟我原本的思考方式不太一樣
謝謝!
作者: Hsieh    時間: 2011-4-23 19:29

回復 3# freeffly
  1. Sub ex()
  2. Dim A As Range '此例只適用工作表明稱為來源參照內容
  3. If WorksheetFunction.CountIf(UsedRange, "=#REF!") = 0 Then Exit Sub
  4. For Each A In Cells.SpecialCells(xlCellTypeFormulas, xlErrors)
  5. If A.Value = CVErr(xlErrRef) Then
  6.   Set b = A.Precedents '來源參照
  7.   Sheets.Add(after:=Sheets(Sheets.Count)).Name = b.Text
  8. End If
  9. Next
  10. End Sub
複製代碼

作者: freeffly    時間: 2011-4-23 19:54

回復 6# Hsieh


    Hsieh 大第三行就出現錯誤,你的方法好像是不是只有當有錯誤值時才執行?
作者: Hsieh    時間: 2011-4-23 23:43

回復 7# freeffly

If WorksheetFunction.CountIf(UsedRange, "=#REF!") = 0 Then Exit Sub
應該要指名工作表
If WorksheetFunction.CountIf(Sheet8.UsedRange, "=#REF!") = 0 Then Exit Sub
這是指該工作表內有產生參照錯誤的儲存格數量,如果此數量為0就退出程序
作者: freeffly    時間: 2011-4-25 08:24

回復 8# Hsieh


    謝謝回覆,大大的方式再找時間研究看看




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