返回列表 上一主題 發帖

[發問] 如何建立只選取''非隱藏儲存格''的循環語句

回復 1# HSINLI
可修改如下
  1.   For i = 2 To 交.Range("d2").End(xlDown).Row
  2.             If 交.Range("c" & i).RowHeight Then 'RowHeight > 0 '儲存格不是隱藏的
  3.                 If 交.Range("c" & i) = "Bought" Then
  4.                     po.Range("c" & ipo) = po.Range("c" & ipo) + 交.Range("e" & i)
  5.                 ElseIf 交.Range("c" & i) = "Sold" Then
  6.                     po.Range("c" & ipo) = po.Range("c" & ipo) - 交.Range("e" & i)
  7.                 End If
  8.             End If
  9.         Next i
複製代碼
也可如此
  1. Option Explicit
  2. Sub Ex()
  3.     Dim po As Worksheet, 交 As Worksheet
  4.     Dim ipo As Integer, Bought As Integer, Sold As Integer
  5.     Set po = Sheets("position")
  6.     Set 交 = Sheets("交易紀錄")
  7.     Application.ScreenUpdating = False
  8.     po.Range("a5", po.[A5].End(xlDown)) = ""
  9.     'AdvancedFilter xlFilterCopy 在指定的其他範圍的欄位(無字串,複製全部欄位。有字串,須為資料庫的欄位)
  10.     交.ListObjects("表格1").Range.Range("D:D").AdvancedFilter xlFilterCopy, , po.Range("a5"), True
  11.       
  12.     'AdvancedFilter(進階篩選)  ,AutoFilter(自動篩選)
  13.     'AdvancedFilter Action:= xlFilterInPlace  在篩選的範圍顯示篩選後的資料
  14.     With po
  15.         For ipo = 6 To .Range("a5").End(xlDown).Row          '
  16.             交.ListObjects("表格1").Range.AutoFilter field:=4, Criteria1:=.Range("a" & ipo)
  17.             With 交.ListObjects("表格1").Range
  18.                     .AutoFilter field:=3, Criteria1:="Bought"
  19.                     Bought = Application.Sum(.Range("E:E").SpecialCells(xlCellTypeVisible))
  20.                     'Application.Sum 工作表函數
  21.                     '.SpecialCells [特殊的儲存格] (xlCellTypeVisible) 參數:=可見的儲存格
  22.                     .AutoFilter field:=3, Criteria1:="Sold"
  23.                     Sold = Application.Sum(.Range("E:E").SpecialCells(xlCellTypeVisible))
  24.             End With
  25.             .Cells(ipo, "C") = Bought - Sold
  26.         Next
  27.     End With
  28.     交.ListObjects("表格1").Range.AutoFilter  '沒有準則 = 取消自動篩選
  29.     Application.ScreenUpdating = True
  30. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 4# HSINLI
已找到附檔程式碼的錯誤如下
  1. For i = 2 To 交.Range("d2").End(xlDown).Row
  2.             If 交.Range("c" & i).RowHeight Then 'RowHeight > 0 儲存格不是隱藏的
  3.                 If 交.Range("c" & i) = "Bought" Then
  4.                     '這錯誤 ipo沒有給值 ********
  5.                     po.Range("c" & ipo) = po.Range("c" & ipo) + 交.Range("e" & i)
  6.                     '***************************
  7.                 ElseIf 交.Range("c" & i) = "Sold" Then
  8.                     po.Range("c" & ipo) = po.Range("c" & ipo) - 交.Range("e" & i)
  9.                 End If
  10.             End If
  11.     Next i
複製代碼
請將  If 交.Range("c" & i).RowHeight Then 'RowHeight > 0 儲存格不是隱藏的
套到你第一帖的程式碼試看看
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 6# HSINLI
想請問如果發生這種錯誤的話,要怎麼找出問題在哪裡啊!?
待你VBA 的經驗值提升後,應可自行找出.
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 手心向下是助人,手心向上是求人;助人快樂,求人痛苦。
返回列表 上一主題