返回列表 上一主題 發帖

[發問] 此巨集為何錯??

回復 40# t8899
因為我沒有你目前測試的檔案,
故無法一一推敲你的數據過程,
你是用 CStr() 還是 CSng() ?

TOP

回復  t8899
因為我沒有你目前測試的檔案,
故無法一一推敲你的數據過程,
你是用 CStr() 還是 CSng()  ...
c_c_lai 發表於 2013-8-14 10:59

csng...............

TOP

回復  t8899
晤...
若是會有小數出現的數值,
那就要把 CLng(  用 CSng( 來取代就可以了.
luhpro 發表於 2013-8-13 22:30


如果輸出再增加到 sheet2 工作表的A1順序貼上
如果A1非空白, 則B1 ....C1............D1
語法是?

TOP

回復 43# t8899
  1. Sub nn()
  2. Dim i%
  3. Dim lRows As Long

  4. With Sheets("sheet2")
  5.   lRows = .Cells(Rows.Count, 1).End(xlUp).Row
  6.   .Cells(lRows + 1, 1) = Sheets("Sheet3").Cells(i + 1, 2).Value
  7.   '.
  8.   '.
  9.   '.
  10. End With
  11. End Sub
複製代碼

TOP

回復  t8899
luhpro 發表於 2013-8-14 23:05


謝謝您近日來熱心指導!

TOP

本帖最後由 t8899 於 2013-8-15 21:09 編輯
回復  t8899
luhpro 發表於 2013-8-14 23:05

最後一個問題
在最後輸出已達條件的對話盒後
之前符合條件的部份
將 zz之值拷到  ZZ.Offset(, 26) (已達條件的,再重新繞回來,才不會一直重覆出現)
----------------------
     Dim sStr$
Dim ZZ As Range
      sStr = ""
       sStr2 = ""
   For Each ZZ In Range("c2:c111")
    If Not IsError(ZZ) Then
         If Range("Q26").Value = 1 And flag = True Then
      M = Round(ZZ - ZZ.Offset(, 26), 2)
If M >= ZZ.Offset(, 2) Then
   If sStr <> "" Then sStr = sStr & Chr(10)
sStr = sStr & "" & Cells(ZZ.Row, 2).Value & "=====> " & Round(ZZ - ZZ.Offset(, 26), 2)
                  End If
If M <= -ZZ.Offset(, 2) Then
If sStr2 <> "" Then sStr2 = sStr2 & Chr(10)
  sStr2 = sStr2 & "" & Cells(ZZ.Row, 2).Value & "=====> " & Round(ZZ - ZZ.Offset(, 26), 2)
                  End If
    End If
    End If
       Next
  If sStr <> "" Then
  CreateObject("Wscript.shell").Popup sStr, 4, "Auto Closed MsgBox", 64
     End If
     If sStr2 <> "" Then
  CreateObject("Wscript.shell").Popup sStr2, 4, "Auto Closed MsgBox", 64
      End If

TOP

回復 46# t8899
因為漲跌兩邊都要執行,
所以會加兩行 :
  1.   Dim sStr$
  2.   Dim ZZ As Range
  3.   
  4.   sStr = ""
  5.   sStr2 = ""
  6.   For Each ZZ In Range("c2:c111")
  7.     If Not IsError(ZZ) Then
  8.       If Range("Q26").Value = 1 And flag = True Then
  9.         M = Round(ZZ - ZZ.Offset(, 26), 2)
  10.         If M >= ZZ.Offset(, 2) Then
  11.           If sStr <> "" Then sStr = sStr & Chr(10)
  12.           sStr = sStr & "" & Cells(ZZ.Row, 2).Value & "=====> " _
  13.                  & Round(ZZ - ZZ.Offset(, 26), 2)
  14.           ZZ.Offset(, 26) = ZZ ' <======= 加在這裡
  15.         End If
  16.         If M <= -ZZ.Offset(, 2) Then
  17.           If sStr2 <> "" Then sStr2 = sStr2 & Chr(10)
  18.           sStr2 = sStr2 & "" & Cells(ZZ.Row, 2).Value & "=====> " _
  19.                    & Round(ZZ - ZZ.Offset(, 26), 2)
  20.           ZZ.Offset(, 26) = ZZ ' <======= 加在這裡
  21.         End If
  22.       End If
  23.     End If
  24.   Next
  25.   If sStr <> "" Then
  26.     CreateObject("Wscript.shell").Popup sStr, 4, "Auto Closed MsgBox", 64
  27.   End If
  28.   If sStr2 <> "" Then
  29.     CreateObject("Wscript.shell").Popup sStr2, 4, "Auto Closed MsgBox", 64
  30.   End If
複製代碼
另外,建議你可以參考類似上面這樣有做縮排處理的程式編寫習慣,
只需先找到區塊的某一邊,
直接按上或下鍵就能確認區塊的範圍,
這樣要找問題或是切入點會比較容易,
也比較不容易因為要找一些缺東缺西的問題而浪費寫程式的時間.

TOP

回復  t8899
因為漲跌兩邊都要執行,
所以會加兩行 :另外,建議你可以參考類似上面這樣有做縮排處理的程式 ...
luhpro 發表於 2013-8-15 21:47


訊息無法一次出現???會一隻一隻出現??

TOP

本帖最後由 t8899 於 2013-8-16 06:51 編輯
回復  t8899
因為漲跌兩邊都要執行,
所以會加兩行 :另外,建議你可以參考類似上面這樣有做縮排處理的程式 ...
luhpro 發表於 2013-8-15 21:47


應該是執行到 ZZ.Offset(, 26) = ZZ時,就跳出 for next 直接執行下面 ?迴圈沒跑完就跳出?

TOP

附檔 Book1.rar (15.22 KB)

TOP

        靜思自在 : 一個缺口的杯子,如果換一個角度看它,它仍然是圓的。
返回列表 上一主題