返回列表 上一主題 發帖

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

問題就只是沒有使用Set設置變數為物件
Hsieh 發表於 2014-3-20 15:14

物件定義錯誤??請教如何定義查找出來的屬性 ?
Sub aaa()
Dim a
Set a=Sheets("She5555555555555et6").Range("ao20:ao350").Find(Application.Max(Sheets("She5555555555555et6").Range("ao20:ao350")))
Sheets("She5555555555555et6").Range("A10") = Sheets("She5555555555555et6").Range(a).Offset(0, -37)
End Sub

TOP

回復  t8899

直接這樣不就行了嗎?不然就是要
owen06 發表於 2014-3-20 20:07

不行耶, 沒有設定物件變數
a=Sheets("She5555555555555et6").Range("ao20:ao350").Find(Application.Max(Sheets("She5555555555555et6").Range("ao20:ao350"))).address

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

回復  t8899

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

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

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

回復 14# t8899


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

Book1.rar (18.29 KB)

TOP

回復  t8899


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


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

TOP

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



附檔 Book2.rar (40.31 KB)

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-21 09:37

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

TOP

        靜思自在 : 受人點水之恩,須當湧泉以報。
返回列表 上一主題