請問各位先進
我想利用VBA在不使用Excel內建函數的情況下
透過自訂的按鈕自動判斷10位同學
每一位同學在5次的考試中
如果5次成績都大於60分則顯示合格
判斷式想破頭都想不出來
還請廣大的網友幫幫忙
謝謝
文章關鍵字


函數用 =if(large()>60,"ok",if(large()>60…………
就可以很簡單做到的事情,為什麼要用vba ??



真要用vba(用內建函數large)
(點下可看大圖)

snare wrote:
函數用 =if(la...(恕刪)


唉唉~這問題我也思考了很久
有現成的涵數卻不能使用
任課老師就是規定不能使用函數
所以才很苦惱的想判斷式該如何寫
我大約寫一下,複制貼上肯定不會過,自行改一下

sub testpass()

for i=2 to 11'10位同學
g=0'先0科通過
if ["B" & i & ""]>=60 then
g=g+1'B通過G=0+1,代表通過1科
elseif ["C" & i & ""]>=60 then
g=g+1
elseif ["D" & i & "']>=60 then
g=g+1
elseif ["E" & i & ""]>=60 then
g=g+1
elseif ["F" & i & ""]>=60 then
g=g+1
if g=5 then ["G" & i & ""]="通過"
elseif g=4 then ["G" & i & ""]="條件通過"
else ["G" & i & ""]="不通過"
endif
endif
endif
endif
endif
endif
endif
endif
next
end sub

alwayslee wrote:
我大約寫一下,複制...(恕刪)


幫您縮短一下

Sub test2()

Dim check As Integer
For i = 1 To 10
check = 0
For j = 1 To 5
If Cells(i + 1, j + 1) > 60 Then check = check + 1
Next j
If check = 5 Then
Cells(i + 1, 7) = "OK"
Else
If check = 4 Then Cells(i + 1, 7) = "maybe" Else Cells(i + 1, 7) = "NO"
End If
Next i

End Sub

snare wrote:
幫您縮短一下Sub...(恕刪)


It's a very useful programming model. Good!

alwayslee wrote:
我大約寫一下,複制貼...(恕刪)


snare wrote:
幫您縮短一下
Sub...(恕刪)


感謝alwayslee及snare兩位的大力幫忙
看到兩位的寫法讓我豁然開朗
原來還可以這樣寫
不過snare大的縮短寫法我有個疑問
在下面的這段語法裡
For j = 1 To 5
If Cells(i + 1, j + 1) > 60 Then check = check + 1
Next j

有 for j 也有next j
但在VBA裡卻會跳出有next卻沒有for的問題視窗
請問這是何處有問題??
還請大家賜教
謝謝

watermelon1983 wrote:
snare wrot...(恕刪)


If check = 4 Then Cells(i + 1, 7) = "maybe" Else Cells(i + 1, 7) = "NO"

這是同一行
snare wrote:If check ...(恕刪)

不好意思
小弟我資質愚鈍還不是很理解
我自行將程式碼改成下列的樣子
卻會出現這樣的訊息
還請您指導
謝謝
watermelon1983 wrote:
我自行將程式碼改成下列的樣子
...(恕刪)


一堆錯誤
If Cells(i + 1, j + 1) > 60 Then check = check + 1
這也是同一行
i改成2開始,後面的i就不要加1
還有else不見了

請直接用複制⇒貼上,把5樓的程式碼,套用在1樓的表格
不要做任何修改

使用F8,一行一行執行、測試
先了解架構、原理後,再改
關閉廣告
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!