Board logo

標題: [發問] 請問此巨集為何錯??如何改? [打印本頁]

作者: t8899    時間: 2013-8-10 07:22     標題: 請問此巨集為何錯??如何改?

Private Sub Worksheet_Calculate()
    檢查
End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
    檢查
End Sub
Sub 檢查()
    Dim n, sz1, str As String

sz1 = Range("c2:C111")
    str = ""
    For i = 1 To UBound(sz1)
        If Val(SZ(i, 1)) = 0# Then   '--->錯在此行
            If Val(sz1(i, 1)) <> 0# Then str = str & vbCrLf & i + 1 & "===" & i + 1 & "=" & Sheets("Sheet3").Cells(i + 1, 2).Value
        Else
            n = Round((Val(sz1(i, 1)) - Val(SZ(i, 1))) / Val(SZ(i, 1)) * 100, 2)
             If Abs(n) >= 1 Then str = str & vbCrLf & Sheets("Sheet3").Cells(i + 1, 2).Value & "===>" & n
        End If
    Next i

    If Len(str) > 0 Then
        SZ = Range("C2:C111")
       ' MsgBox str, , "提示"
          CreateObject("Wscript.shell").Popup "" & str, 1, "Auto Closed MsgBox", 64
    End If
END SUB
'=============
作者: GBKEE    時間: 2013-8-10 14:16

回復 1# t8899

  1.      str = ""
  2.     For i = 1 To UBound(sz1)
  3.         If Val(SZ(i, 1)) = 0# Then   '--->錯在此行: 沒有這變數 SZ(i, 1) ????
  4.          'Val(SZ1(i, 1))               ' 有這變數 SZ1
複製代碼

作者: t8899    時間: 2013-8-10 15:58

本帖最後由 t8899 於 2013-8-10 16:01 編輯
回復  t8899
GBKEE 發表於 2013-8-10 14:16

此程式檢查c2:C111變動超過1%的儲存格
sz 為變動前
sz1 為變動後
所以 sz跟sz1 一樣 為 Range("c2:C111")
dim 改為  
Dim n, sz,sz1, str As String
再加sz =Range("c2:C111")
測試無作用???(變動前數值無法抓到)
作者: luhpro    時間: 2013-8-12 22:58

回復 3# t8899
請參看這篇 :
請問此巨集為何錯??




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