返回列表 上一主題 發帖

[發問] 註解轉表格試算的問題

回復 1# OsakaKYC
試試看
  1. Option Explicit
  2. Sub Ex()
  3.     Dim D As Object, S As Variant, i As Integer
  4.     Dim xSum As Single, E As Range, Msg As String
  5.     Dim 料號 As String
  6.     Set D = CreateObject("scripting.dictionary")    '字典物件
  7.     With Sheets("成本")
  8.         i = 2
  9.         Do While .Cells(i, "B") <> ""               '料號欄
  10.             D(Trim(.Cells(i, "B"))) = .Cells(i, "C").Value  '料號的成本
  11.             i = i + 1
  12.         Loop
  13.     End With
  14.     For Each E In Sheets("2014年維修明細").UsedRange.Columns("B:C").Cells
  15.         If E.NoteText <> "" Then
  16.             xSum = 0
  17.             S = Split(Trim(E.NoteText), vbLf)
  18.             For i = 1 To UBound(S)
  19.                 If Len(S(i)) > 0 Then
  20.                 料號 = Trim(Split(S(i), "*")(0))
  21.                     If D.EXISTS(料號) = False Then                      '料號不存在
  22.                         Msg = Msg & vbLf & Trim(Split(S(i), "*")(0))
  23.                     End If
  24.                     xSum = xSum + (D(料號) * Val(Split(S(i), "*")(1)))   '成本累計
  25.                 End If
  26.             Next
  27.             E = xSum
  28.         End If
  29.     Next
  30.     If Msg <> "" Then MsgBox Msg, , "料號不存在"
  31. End Sub
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

回復 4# OsakaKYC
如果某一欄的註解中,藏有一些說明文字(不管中文或是英文字),就會出現"陣列索引超出範圍"
如何藏法給看看.
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

本帖最後由 GBKEE 於 2015-5-26 13:48 編輯

回復 6# OsakaKYC
無法存檔的錯誤,我只有2003版,尚請有2010版者測試看看.

出現"陣列索引超出範圍"的狀況,這錯誤可修改如下試試
  1. For Each E In Sheets("2014年維修明細").UsedRange.Columns("B:C").Cells
  2.         If E.NoteText <> "" Then
  3.             xSum = 0
  4.             S = Split(Trim(E.NoteText), vbLf)
  5.             For i = 1 To UBound(S)
  6.                 If Len(S(i)) > 0 Then
  7.                 料號 = Trim(Split(S(i), "*")(0))
  8.                     If D.EXISTS(料號) = False Then                      '料號不存在
  9.                         Msg = Msg & vbLf & Trim(Split(S(i), "*")(0))
  10.                     Else
  11.                         xSum = xSum + (D(料號) * Val(Split(S(i), "*")(1)))   '成本累計
  12.                     End If
  13.                 End If
  14.             Next
  15.             E = xSum
  16.         End If
  17.     Next
複製代碼
感恩的心......(在麻辣家族討論區.用心學習會有進步的)
但資源無限,後援有限,  一天1元的贊助,人人有能力.

TOP

        靜思自在 : 靜坐常恩己過、閒談莫論人非。
返回列表 上一主題