返回列表 上一主題 發帖

[發問] 請教此程序錯在何處,如何改 ??

[發問] 請教此程序錯在何處,如何改 ??

Sub BBB()
A = Application.Large(Sheets("Sheet6").Range("ao20:ao350"), 1)
Sheets("Sheet6").Range("A10").Value = A.Offset(0, -37)
End Sub

回復 20# t8899


   試了一下覺得不是公式的問題,而是儲存格格式的問題,
   但不知道是何原因造成系統認定該範圍的儲存格格非為一般的數值格數,
   因而在vba裡會找不到物件。

TOP

Hsieh 發表於 2014-3-21 09:37

這是ao20:ao350是公式的問題
為何套在 owen06 的是可以的??

TOP

回復 18# t8899
  1. Sub aaa()
  2. Dim Rng As Range
  3. Set Rng = Sheets("She5555555555555et6").Range("ao20:ao350")
  4. k = Application.Max(Rng)
  5. s = Application.Match(k, Rng, 0)
  6. Sheets("She5555555555555et6").Range("A10") = Rng(s).Offset(0, -37)
  7. End Sub
複製代碼
學海無涯_不恥下問

TOP

建議上傳檔案來看看
Hsieh 發表於 2014-3-20 23:37



附檔 Book2.rar (40.31 KB)

TOP

回復  t8899


    剛才試了一下之前的程式,發現FIND後面如果沒有補上, , xlValues, xlWhole
    在你 ...
owen06 發表於 2014-3-20 23:55


找的資料裡面的值是空白???(下一樓附檔)

TOP

回復 14# t8899


    剛才試了一下之前的程式,發現FIND後面如果沒有補上, , xlValues, xlWhole
    在你的公式下找出來的值會不是正確解答,我依照你的公式去模擬了一個檔案,你看看內容再去改修你的檔案,
    希望能夠解決你的問題。

Book1.rar (18.29 KB)

TOP

回復 14# t8899

由於你的公式有可能傳回空字串,當範圍內沒有任何數值,MAX或LARGE都無法求得最大值
試試看
  1. Sub aaa()
  2. Dim a As Range
  3. Set a=Sheets("She5555555555555et6").Range("ao20:ao350").Find(Application.Max(Sheets("She5555555555555et6").Range("ao20:ao350")))
  4. If Not a Is Nothing Then Sheets("She5555555555555et6").Range("A10") = a.Offset(0, -37)
  5. End Sub
複製代碼
建議上傳檔案來看看
學海無涯_不恥下問

TOP

回復  t8899

二種方式:不然就是要第二種方式因為有定義a的範圍了,所以不需要在a前面特定指出sheetx, ...
owen06 發表於 2014-3-20 20:17

你的沒問題,套在我這裡兩個都不行
查了一下
我的AO欄是公式
AO21=IF(Q21="","",AM21-AN21)
AO22=IF(Q22="","",AM22-AN22)
........
是不是這原因???

TOP

本帖最後由 owen06 於 2014-3-20 20:24 編輯

回復 11# t8899

二種方式:
  1. Sub aaa()
  2. a = Sheets("She5555555555555et6").Range("ao20:ao350").Find(Application.Max(Sheets("She5555555555555et6").Range("ao20:ao350"))).Address
  3. Sheets("She5555555555555et6").Range("A10") = Sheets("She5555555555555et6").Range(a).Offset(0, -37)
  4. End Sub
複製代碼
不然就是要
  1. Sub aaa()
  2. Dim a As Range
  3. Set a = Sheets("She5555555555555et6").Range("ao20:ao350").Find(Application.Max(Sheets("She5555555555555et6").Range("ao20:ao350")))
  4. Sheets("She5555555555555et6").Range("A10") =a.Offset(0, -37)
  5. End Sub
複製代碼
第二種方式因為有定義a的範圍了,所以不需要在a前面特定指出sheetx,他就能去找到他的位置了。

附檔你試試看,我做是都沒問題呀。

Book1.rar (16.19 KB)

TOP

        靜思自在 : 忘功不忘過,忘怨不忘恩。
返回列表 上一主題