標題:
COUNTA 或某些函數在VBA上使用的疑問
[打印本頁]
作者:
hugh0620
時間:
2010-12-17 19:21
標題:
COUNTA 或某些函數在VBA上使用的疑問
Dear 大大們
小弟在VBA撰寫有關函數部份的程式碼時,都會有一個問題
就是在SHEET1讀取SHEET2的資料時,會讀不到,例如附件中的COUNTA這個函數
能否請大大講解一下,問題是什麼??? 其函數在VBA上撰寫的基本觀念為何?? 好讓小弟可以學習~
[attach]4131[/attach]
作者:
Hsieh
時間:
2010-12-17 19:31
回復
1#
hugh0620
Sheet1.Cells(1, 1) = Application.CountA(Sheet2.[A7:A65536])
作者:
GBKEE
時間:
2010-12-17 20:05
回復
1#
hugh0620
你的程式碼是在 Sheet1物件
Sheet1.Cells(1, 1) = Sheet2.Application.CountA(
[A7:A65536]
)
[A7:A65536]
是傳回 Sheet1的工作表的位置 ->
如要指定本身工作表以外的工作表需指明
如你的程式碼是在 一般模組(Module )
Sheet1.Cells(1, 1) = Sheet2.Application.CountA(
[A7:A65536]
)
[A7:A65536]
是傳回 作用中工作表的位置(ActiveSheet) ->如要
指定作用中工作表(ActiveSheet)
以外的工作表需指明
作者:
brabus
時間:
2010-12-19 20:53
哦
這樣我也多學了一招哦
謝謝分享囉
作者:
hugh0620
時間:
2010-12-19 23:11
回復
3#
GBKEE
謝謝大大的詳細說明~ 讓我能夠了解~ 感恩~
作者:
hugh0620
時間:
2010-12-19 23:13
回復
2#
Hsieh
謝謝大大~ 原來我的sheet2是放錯了位置
作者:
7long
時間:
2010-12-25 11:10
EXCEL SHEET 跟ActiveSheet 很不容易理解
需要驗證。到現在還是無法很容易理解@@
真是傷腦筋
作者:
hugh0620
時間:
2011-1-6 11:36
回復
3#
GBKEE
Dear 大大
小弟想要再請問一個問題
若是我在用COUNTA去統計時,若我的區間是不一定的時候,就會有問題
一般正常的寫法是
Application.CountA(Sheet2.[E22: E65536]) [固固區間進行統計)
若我已W是一個Row的數值(亦即是該儲存格是在第幾列)
Application.CountA(Sheet2.[E&W: E65536]) [改變成可浮動區間進行統計]
請大大教導我
[attach]4330[/attach]
作者:
GBKEE
時間:
2011-1-6 13:40
回復
8#
hugh0620
Sheet1.Cells(4, 2) = Application.CountA(Sheet1.[A22:A65536]) '不接受變數
Sheet1.Cells(4, 2) = Application.CountA(Sheet1.Range("A" & W & ":A65536")) '接受變數
作者:
hugh0620
時間:
2011-1-6 14:01
回復
9#
GBKEE
謝謝大大~ 幫我解決 (我自己試了老半天都無法解決):L
作者:
GBKEE
時間:
2011-1-6 15:05
回復
10#
hugh0620
Sub Ex()
Dim W%
W=10
Sheet1.Cells(4, 2) = Application.CountA(Sheet1.Range("A" &
W
& ":A65536"))
End Sub
作者:
C.F
時間:
2011-1-6 16:21
若單純要利用 Excel 的函數也可以用 WorksheetFunction.CountA 的方式哦~~
作者:
asus103
時間:
2011-1-6 17:10
回復
2#
Hsieh
請問一下版主大大
為什麼是用Application.CountA(Sheet2.[A7:A65536])
而不是用WorksheetFunction.CountA(Sheet2.[A7:A65536])
我在說明中只有看到下者
他們(Application和WorksheetFunction)之間都可以通用嗎?
還是有其它的限制
作者:
lai.k.h
時間:
2011-1-23 17:00
我也學到了,謝謝.
作者:
Hsieh
時間:
2011-1-23 22:41
回復
13#
asus103
http://gb.twbts.com/index.php/topic,1174.msg5880.html#msg5880
作者:
hugh0620
時間:
2011-1-24 09:26
回復
13#
asus103
這是大大貼的網址~ 怕有人找不到那段解釋的文字~ 特地貼出來~
1. 注意 Match 是工作表函數的成員而不是VBA內建函數,所以需指明上層物件。
WorksheetFunction 的標準寫法是 Application.WorksheetFunction。
2. 注意你的程式位於一般模組還是物件模組。
一般模組:
在一般模組 (就是 Module1、Module2.. 那些) 裡是可以省略 Application 的。
(省略 Application 就不能省略 WorksheetFunction,意思就是不能只寫函數名稱)
物件模組:
但在物件模組裡就不能省略 Application 了,
因為物件模組預設的物件是該物件本身,
例如 Worksheet 模組的預設物件是 Worksheet;
UserForm 模組的預設物件就是 UserForm。由此可知,
若在 UserForm1 模組寫 WorksheetFunction (省略了 Application),
VBA 會視為 UserForm1.WorksheetFunction,結果就會出錯了。
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)