返回列表 上一主題 發帖

[發問] [資料區域的選擇]含公式但無數值的儲存格視為空白

回復 1# jackson7015
你說的有的些模糊,上傳檔案說清楚吧.

TOP

回復 3# jackson7015
試試看
  1. Sub Ex()
  2.     Dim Ar(), Rng As Range, Xi As Integer
  3.     With Sheets("日報表")
  4.         Set Rng = .Range("d7", .[d7].End(xlDown))  '資料範圍: B欄有料的列
  5.         ReDim Ar(1 To Rng.Count, 1 To 10)          '陣列的大小 1 To 10 => 資料範圍 B欄:K欄
  6.         For Xi = 1 To Rng.Count
  7.             Ar(Xi, 1) = Date                       '日期
  8.             Ar(Xi, 2) = .Cells(Rng(Xi).Row, "B")   '編號
  9.             Ar(Xi, 3) = .Cells(Rng(Xi).Row, "N")   '備註
  10.             Ar(Xi, 4) = .Cells(Rng(Xi).Row, "D")   '地點
  11.            S = "=IF(RC[4]=1,""查無"",IF(RC[3]=1,""成案"" & SUM(RC[6]:RC[9])&""KW"",""""))"
  12.             Ar(Xi, 5) = S                          '成案
  13.             Ar(Xi, 6) = .Cells(Rng(Xi).Row, "G")
  14.             Ar(Xi, 7) = .Cells(Rng(Xi).Row, "H")
  15.             Ar(Xi, 8) = .Cells(Rng(Xi).Row, "I")
  16.             Ar(Xi, 9) = .Cells(Rng(Xi).Row, "J")
  17.           '  Ar(Xi, 10) = .Cells(Rng(Xi).Row, "n")  '  ** 請問這裡 要寫些什麼?   **
  18.         Next
  19.     End With
  20.     With Sheets("綜合資料庫")
  21.         .Range("B5:O" & Rows.Count) = ""        '清除 資料
  22.         .[B5].Resize(Rng.Count, 10) = Application.Transpose(Application.Transpose(Ar))
  23.                                                '轉置陣列  填入:資料
  24.     End With
  25. End Sub
複製代碼

TOP

本帖最後由 GBKEE 於 2012-2-8 20:46 編輯

回復 5# jackson7015
  1.     With Sheets("綜合資料庫").Cells(Rows.Count, "B").End(xlUp).Offset(1)
  2.          .Resize(Rng.Count, UBound(AR, 2)) = Application.Transpose(Application.Transpose(AR))
  3.     End With
複製代碼

[   ]   看這裡 ...

TOP

回復 8# jackson7015
可以ㄚ  不過 日報表 B3=TODAY()   還是當天的日期

TOP

回復 10# jackson7015
Ar(Xi, 1) = .[B3]                       '日期
,剩下的那個逗點再好好研究
  1. With [10].Font
  2.         .Name = "新細明體"
  3.         .FontStyle = "標準"
  4.         .Size = 11
  5.         .Strikethrough = False
  6.         .Superscript = False
  7.         .Subscript = False
  8.         .OutlineFont = False
  9.         .Shadow = False
  10.         .Underline = xlUnderlineStyleNone
  11.         .ColorIndex = 1
  12.     End With
複製代碼

TOP

回復 13# jackson7015
傳檔看看

TOP

回復 15# jackson7015
Xi As Integer  這裡宣告 Integer 變數係以範圍為 -32,768 到 32,767 之 16 位元 (2 個位元組) 數字的形式儲存
修改為
Xi As Long   Long (長整數)變數係以範圍從 -2,147,483,648 到 2,147,483,647 之 32 位元 (4 個位元組) 有號數字形式儲存。Long 的型態宣告字元為 &。

Sub 累計日報表資料()
  '  *** If MsgBox("是否執行複製?", vbYesNo) = vbNo Then Exit Sub  移到下方
    Dim Ar(), Rng As Range, Xi As Long
    With Sheets("日報表")
        Set Rng = .Range("d7", .[d7].End(xlDown))  '資料範圍: B欄有資料的列
          ' *** 加上判斷日報表 沒有資料  ****
        If Application.CountA(Rng) = 0 Then MsgBox "日報表 沒有資料 !!!": Exit Sub   
        If MsgBox("是否執行複製?", vbYesNo) = vbNo Then Exit Sub
        ReDim Ar(1 To Rng.Count, 1 To 20)          '陣列的大小 1 To 20 => 資料範圍 B欄:V欄
        For Xi = 1 To Rng.Count     '<-是這裡錯誤  Xi As Integer
'日報表 沒有資料  Rng.Count =Rows.Count-7 : 2003版 65,536 - 7  > 32,767

TOP

回復 17# jackson7015
  1. With Sheets("日報表")
  2.         If .Cells(Rows.Count, "D").End(xlUp).Row = 4 Then   '偵查是否資料
  3.             MsgBox "日報表  沒有資料 !!"
  4.             Exit Sub
  5.         End If
  6.         Set Rng = .Range("d7", .Cells(Rows.Count, "D").End(xlUp)) '  **** 這裡改成 由下往上  資料範圍: B欄有資料的列
  7.         If Application.CountA(Rng) = 0 Then MsgBox "日報表 沒有資料 !!!": Exit Sub '判斷日報表有沒有資料
  8.         If MsgBox("是否執行複製?", vbYesNo) = vbNo Then Exit Sub
複製代碼

TOP

回復 19# jackson7015
你說的有理 那就是多餘了

TOP

        靜思自在 : 要比誰更受誰.不要比誰更怕誰。
返回列表 上一主題