我寫了一個函數,但由於某種原因它不起作用。我調試了,但仍然沒有發生什麼事。我寫了一些其他功能來理解什麼不起作用,並且我得出結論認爲activecell是有問題的部分。由於某些原因,當我寫入函數activecell。未被檢測到。 我在下面寫了我的代碼。該函數有兩個參數:r(只是一列的範圍,換句話說就是Ai:Aj)和名稱(它必須是一個字符串),這個函數應該做的是計算最長的外觀不斷名字,換句話說,如果我有一個有值進入細胞中,A,b,A,A,A,如果NAME =一則函數將返回3.VBA for Excel,activecell在編寫函數時不起作用
Function cont(r As range, name As String) As Integer
Dim count As Integer, l As Integer
r.Cells(1).Activate
l = 0
count = 0
Do While IsEmpty(ActiveCell) = False
If ActiveCell.Value <> name Then
ActiveCell.Offset(1, 0).Activate
Else
Do While ActiveCell.Value = name
count = count + 1
ActiveCell.Offset(1, 0).Activate
Loop
If count >= l Then l = count
End If
count = 0
Loop
cont = l
End Function
我擡頭看看其他人是否有類似的問題,但我找不到有用的東西。也許有人在這裏可以告訴我什麼是錯的?謝謝!
Scott提供了一個答案,但是爲了解釋爲什麼你的代碼不工作,UDF不能改變'ActiveCell',所以你的行'r.Cells(1).Activate'什麼都不做,並且'ActiveCell'仍然是觸發對'cont'的調用的單元格,如果您輸入/更新它,它將成爲發生'= cont(...)'的單元格(因此會給出一個循環參考錯誤),或者你的'r'範圍內被更改的單元格。 (如果單元格中包含「name」的值,則可能會出現無限循環,或者至少是循環,直到count變爲32767.) – YowE3K