1樓:
在你的控制控制元件的click事件中編寫「要控制控制元件的名稱.enable=trun/false」你說的迴圈可以通過開關控制(即通過一個變數判斷應該執行什麼**)
如:private sub command1_click()if command2.enabled = false then command2.
enabled = true else command2.enabled = false
end sub
如果想控制多個同樣的控制元件可以把這些控制元件編組,用index控制,如果是不同控制元件那隻能逐個控制了。
2樓:匿名使用者
private sub form_load()text2.enabled = falseend sub
private sub text1_click()if text2.enabled = false thentext2.enabled = true '或更多的else
text2.enabled = falseend if
end sub
3樓:匿名使用者
private sub command1_click()dim ctl as control
for each ctl in form1if ctl.name <> "command1" thenctl.enabled = not ctl.enabledend if
next
end sub
4樓:匿名使用者
dim k as integer
private sub command1_click()dim ob as control
for each ob in me.controlsif k = 1 then
ob.enabled = false
else
ob.enabled = true
end if
next
k = -k
command1.enabled = trueend sub
private sub form_load()k = 1
end sub
更多vb**請參閱我的部落格:http://hi.baidu.com/zgmg/
vb中for迴圈step的問題
5樓:匿名使用者
如果沒有其他條件使迴圈變數的值發生變化,當第一次迴圈條件滿足時,step為0將造成死迴圈,當第一次迴圈條件不滿足時,step為0不迴圈
6樓:岔路程式緣
先看這幾句執行時的作用:
(1)s = 0,給s設初值0
(2)for i = 1 to 5,第一次執行這一句時,對i設初值1,以後每次執行這一句時都判斷i的值是否介於初值和終值之間,也就是在1和5之間,如果在這個範圍之內,就執行下一句,如果超出這個範圍,就去執行next i後面的那一句了。——樓主所提的問題,這一句話是第一個重點,請仔細理解。
(3)s = s + i,把s和i相加,再把和賦值給s
(4)next i,執行這一句時,把i的值加上步長,在本例中,就是加1,再把值給i,相當於執行了i=i+1,再返回for i=1 to 5那一句去執行。——樓主所提的問題,這一句話是第二個重點,請仔細理解。
(5)print s, i,這一句是列印s和i的值,當程式執行到這一句時,i的值一定是6了,因為等於5時還跳不出這迴圈體呢!
問題補充:private sub command1_click()
for i = 1 to 3 step 2
print "vb"
next i
end sub
為什麼「vb」的執行次數為2次 step為2 不是直接1跳到3嗎
補充答覆:
樓主說的對啊,確實是直接從1跳到3,但是3仍然符合進入迴圈的條件,所是要print 兩次"vb"啊!!
-------------------------------------
private sub command1_click()
dim x as integer
dim n as integer
x = 1
n = 0
do while x < 20
n = n + 1
x = x * 3
loop
text1.text = str(x)
text2.text = str(n)
end sub
為什麼n=3 是怎麼計算出來的??
再補充答覆:
看執行do.....loop之間的語句幾次就可以了
第一次,n=n+1=0+1=1,x=x*3=1*3=3
第二次,n=n+1=1+1=2,x=x*3=3*3=9
第三次,n=n+1=2+1=3,x=x*3=9*3=27
第四次,進入時,判斷 x < 20已經不成立(已經=27了!),所以不能進入,迴圈結束,最終結果是n=3,x=27
7樓:淡智板環
for迴圈
是定長迴圈
.在迴圈開始後
把step
值加到迴圈計數器
(i)裡。並不會動態改變step。
step
的值可以是正數,負數,或0
.為0時,就會無限迴圈.
如果你要動態改變step
你就要用do
或while
迴圈實現。
8樓:我們的夢
使用下面的語句測試,說明它應該是無限迴圈的。
private sub command1_click()for i = 2 to 4 step 0 『這句換為for i = 2 to 2 step 0也行)
j = j + 1
debug.print j
if j > 10 then exit subnext i
end sub
vb迴圈語句問題 for i=1 to 3
9樓:網海1書生
i的迴圈條件是從1到3,換句話說迴圈的退出條件就是i大於3,所以當迴圈結束時,i的值就是3+step,由於step預設為1,所以i就等於4咯
補充說明一下:next i的作用相當於i=i+step,當最後一次迴圈執行時,i=3,那麼當執行到next時,i就被自動+step,由於step是1,所以i就變為4了。這個可能會讓你更容易理解。
vb for迴圈的步長step問題
10樓:
dim i,l as integer '宣告i為變體變數,l為整型變數
for i = 0 to 20 step l '迴圈從0到20,注意你這裡是個字母「o」,應該是數字「0」,步長為l,之前l沒有賦值,所以l為0
l = 0 '給l賦值
l.... '結果l不為0
next i
for迴圈不寫步長時步長預設為1
11樓:匿名使用者
for 迴圈 是定長迴圈 .
在迴圈開始後 把step 值加到 迴圈計數器 (i) 裡。並不會動態改變step。
step 的值 可以是正數,負數,或0 .為0時,就會無限迴圈.
如果你要動態改變step 你就要用do 或 while 迴圈實現。
vb for迴圈中if判斷問題
12樓:匿名使用者
end if是用在多行的if語句中的,這樣子:
if allfenlei(c) = "" thenexit for
end if
如果你把exit for放到then後面的話,這就是單行的,不用end if 來結束了。
對了,單行的後面一樣可以跟else的
13樓:**聖使
if 條件 then 語句 else 語句』這是條語句,不需要endif
if 條件 then 』這是塊語句,需要end if來結束語句elseif 條件 then
語句。。。
else
語句end if
14樓:匿名使用者
if allfenlei(c) = "" then exit for '如果你是一句寫完,就不需放end if...反之就要。。
if allfenlei(c) = "" thenexit for
end if
vb,do until迴圈語句問題?
15樓:匿名使用者
數值0等同於布林值常量的false,而do until則是當表示式為真時跳出迴圈,這與do while剛好相反,所以:
do until 0
相當於do until false
相當於do while not(false)相當於do while true
所以,如果不在迴圈體中跳出迴圈或跳出所在過程或end或goto的話,這將是一個死迴圈.
自然,迴圈體將至少被執行一次.
16樓:匿名使用者
do until 條件 意思是 直到條件為true 則退出迴圈 也就是do until true 的時候退出。
因為0 表示false ;1 表示true。
所以 如果「條件」是一個為0的常數 這句話就可以表示為 do until false 。
上面說到do until true 的時候退出,所以相反的,do until false 就是執行迴圈。
為什麼是至少一次呢,因為迴圈體內可以用exit do 累退出迴圈。如果沒有這個語句,那就是死迴圈。
17樓:匿名使用者
do until 條件.........loop '這個條件是為假才會執行 直到為真停止
vb中的for迴圈的問題
18樓:翰林院裡掃地的
step-1 表示每一步減1,也就是迴圈第一次是i=4,然後是i=3,i=2
這是稱為「冒泡法」的排序方法,可以這樣理解:
外迴圈表示需進行幾輪比較,對4個元素進行比較排序,需要進行3輪比較,所以for i = 4 to 2 step -1。
而內迴圈則可以這樣說:
第一次是i=4,a(1)與a(2)、a(2)與a(3)、a(3)與a(4)進行比較,如果發現排列順序不對,則交換位置,這樣出了內迴圈之後,最大的元素會「沉」到最後一位成為新的a(4)。
而第二次則是i=3,在前三個元素中找到最大的(由於在上一個迴圈比較中a(4)已經是最大的了,所以就不需再拿a(4)出來比較,可將閣下的**中內迴圈改為for j = 1 to i-1),把它沉到第三位成為新的a(3)。同理,第三次是在前兩位進行排序。這樣當迴圈結束後,最小的元素就如水泡往上冒一樣,一步步冒到最上面來了。
樓上的yutuo5兄的內迴圈定義錯了,應該是for j = 1 to i-1 的。
(由於本人疏忽,發表答覆後進行了多次修改,深感抱歉。)
19樓:匿名使用者
只用一層迴圈不能完成排序。比如陣列為:
4321
一次排序後:3214
二次後:2134
三次後:1234
20樓:匿名使用者
首先,只用一層是不可以的,當你的資料很特殊的時候還有可能兩個迴圈是一種變化後的冒泡演算法
改成下面**應該更好
for i = 4 to 2 step -1for j = 1 to i
if a(j) > a(j + 1) thent = a(j + 1)
a(j + 1) = a(j)
a(j) = t
end if
next j
next i
VB中for迴圈的問題,vb中一個簡單for迴圈的問題
for a 1 to 10 next 樓主想一下,結束這個迴圈的條件是什麼?是不是當a的值不符合條件的時候就結束?那a等於多少才不符合條件呢?當a遞增到11的時候就會結束迴圈啦 所以最後a中儲存的值便是11 你的for迴圈是個空的迴圈,即沒次迴圈 後a增加一到a 10時 迴圈完 此時a 11 然後執...
VB IF語句問題,vb中的if語句問題
if a 1 and a 2 and a 3.then 需要滿足所有條件則執行if if a 1 or a 2 or a 3.then 滿足其中個一就執行if if a 1 then按順序判斷條件,如滿足其中一條,則不執行下面的elseif elseif a 2 then elseif a 3 th...
vb程式設計輸入月份,輸出正確的季節,用迴圈語句。 2冬季,5為春
private sub command1 click label3.caption dim month as integer if text1.text then msgbox 請輸入月份!else if val text1.text 12 or val text1.text 1 then text...