VB問題求助

2022-10-08 05:36:36 字數 1455 閱讀 6946

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...