Board logo

標題: 如何抓取cell中已知某值的位址? [打印本頁]

作者: m09903020    時間: 2012-6-14 12:45     標題: 如何抓取cell中已知某值的位址?

本帖最後由 m09903020 於 2012-6-14 12:47 編輯

小的目前sheet中有A行300列當作一個一維array
請問大大,如圖[attach]11376[/attach]若有一數值為1時,則如何抓取其cell位址
謝謝大大。
作者: register313    時間: 2012-6-14 13:03

回復 1# m09903020
  1. Sub xx()
  2.   Set Rng = Range("A1:A" & [A1].End(xlDown).Row)
  3.   Set ADDX = Rng.Find(1, , , xlWhole)
  4.   MsgBox ADDX.Address
  5. End Sub
複製代碼

作者: GBKEE    時間: 2012-6-14 13:28

本帖最後由 GBKEE 於 2012-6-14 13:30 編輯

回復 1# m09903020
  1. Option Explicit
  2. Sub Ex()
  3.     Dim Ar()
  4.     With Range("A1:A300")
  5.         Ar = .Value
  6.         .Replace "1", "=1/0", xlWhole
  7.         .SpecialCells(xlCellTypeFormulas, xlErrors).Name = "XX"
  8.         .Value = Ar
  9.          MsgBox [XX].Address
  10.     End With
  11. End Sub
複製代碼

作者: m09903020    時間: 2012-6-14 14:54

慚愧慚愧,  我不是很了解接下來這個訊息代表什麼

作者: register313    時間: 2012-6-14 15:19

回復 4# m09903020

請上傳excel壓縮檔
vba之撰寫需考慮工作表及儲存格之使用情形
作者: m09903020    時間: 2012-6-14 15:40

回復 5# register313

不好意思 檔案只留 問題部分 若還是不足先說聲抱歉,再補上

[attach]11384[/attach]
作者: oobird    時間: 2012-6-14 16:47

我測試正常的,也許你把代碼放錯位置了。
[attach]11385[/attach]
作者: register313    時間: 2012-6-14 16:57

回復 6# m09903020

位址放在 陣列Arr 及M欄
  1. Sub yy()
  2.   Dim Arr(1 To 300, 1 To 1)
  3.   For Each R In Sheets("asile_table").[A1:A300]
  4.       Set C = R.Find(1, , , xlWhole)
  5.       If Not C Is Nothing Then s = s + 1: Arr(s, 1) = C.Address(0, 0)
  6.   Next
  7.   Sheets("asile_table").[M1].Resize(s, 1) = Arr
  8. End Sub
複製代碼

作者: m09903020    時間: 2012-6-14 17:06

回復 3# GBKEE


    謝謝G大, G大的程式函數很精簡,我查了很久才看懂。不過我放棄使用了:)
作者: m09903020    時間: 2012-6-14 18:45

回復 7# oobird


    謝謝oo大大 ,  剛剛再試了一次 xx() 確實可用,你po文之前不行我也不是很為什麼"沒宣告"或者沒用with
作者: m09903020    時間: 2012-6-14 19:29

回復 8# register313


    感謝register313大大,兩次協助幫忙,我比較鈍還是不會用for each 內的變數 但整個東西可以做連結運用了(跪拜!)
作者: m09903020    時間: 2012-6-14 21:45

回復 8# register313

    r大可以再請教這句  
    s = s + 1: Arr(s, 1) = c.Address(0, 0)
   語意和邏輯嗎? 謝謝
作者: register313    時間: 2012-6-14 22:34

回復 12# m09903020

Set C = R.Find(1, , , xlWhole)     '設定內容為1的儲存格物件為C
If Not C Is Nothing Then s = s + 1: Arr(s, 1) = C.Address(0, 0)    '每找到C則將C的相對位址放進陣列
  
s = s + 1   's依序加1
(1) s=1, Arr(1, 1) = 第1個內容為1的儲存格相對位址
(2) s=2, Arr(2, 1) = 第2個內容為1的儲存格相對位址
(2) s=3, Arr(3, 1) = 第3個內容為1的儲存格相對位址
作者: m09903020    時間: 2012-6-15 08:53

回復 13# register313

感謝  我正在用這個邏輯try一下




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