1樓:
'修改後的**
'僅對原**作了兩處改動:刪去了form_load部分,修改了command16_click裡開頭的變數定義部分):
private sub command1_click()
text1.tag = text1.text
text1.text = 0
end sub
private sub command16_click()
static bin3 as boolean '修改1
static y as double, x as double '修改2
if bin3 = true then
text1.text = x + val(text1.text)
else
if bin3 = false then
x = val(text1.text)
y = val(text1.tag)
text1.text = x + y
bin3 = true
end if
end if
end sub
至於原因,是你對vb裡變數的作用域還不清楚,看看你原來的**,每次command16_click事件被觸發,bin3變數因為未定義(你說你已經在form_load裡定義了?錯,你在那裡定義的bin3只能作用於form_load裡),程式會預設其為false,所以會一直執行else部分的**。
怎麼改?把它改成在command16_click裡定義,就是我的**裡的「修改1」部分。為什麼用static不用dim?
因為如果是dim的話,每次command16_click事件處理完畢,bin3就會被銷燬,其值得不到儲存,下次command16_click事件被觸發,bin3會被重新定義並賦預設值false,所以程式仍然會一直執行else部分的**。而用了static,command16_click事件處理完畢後bin3不會被銷燬,下次command16_click事件被觸發,bin3也不會被重新定義,所以其值能得到儲存。
我的**裡「修改2」也是基於同樣的理由。
順帶一提,你定義變數的書寫方法是錯誤的。你應該像這樣定義變數並賦初值:
dim bin3 as boolean : bin3 = false
而不應直接這樣寫:bin3 = false(因為程式會理解成dim bin3 as variant :bin3 = false)
你應該這樣定義多個變數:
dim x as double, y as double
而不應這樣寫:dim x, y as double(因為程式會理解成dim x as variant : dim y as double)
夠詳細了吧,還說了點廢話,呵呵
2樓:匿名使用者
因為你的bin3=true了,所以一直在執行這一句
text1.text = x + val(text1.text)
vb自動填表問題,VB自動填表問題
這個是vb?怎麼看怎麼像html啊?vbs?新建窗體的時候選 loginform 就有類似的 了吧,樓上的都寫到資料庫裡了 牛x。vb自動填表問題 vb自動填表問題80分求解 在你上面的表單 之後加上那個這段 頁面載入後,表單就會被填充你指定的內容。把 發上來,才行的呀。vb webbrowser自...
vb的rnd函式問題,VB的Rnd函式問題
此題填1001 1.用rnd函式產生隨機整數,可以通過將由rnd函式產生的隨機小數乘以一個整數,然後再對結果取整獲得。2.產生一個從n到m之間的隨機整數 m n,包括m和n 的表示式為 int rnd m n 1 n 不懂可以追問,希望有幫助 你好!rnd 產生隨機數的範圍是 0,1 所以,產生30...
vb隨機數問題,vb 隨機數問題
private sub command1 click dim a 10 as integer for i 1 to 10 for j 1 to 10 a i int rnd 100 a j int rnd 100 if a i a j then a i a i 1 next next for i 1...