1樓:陽光上的橋
你的a和b是另外一個sub的臨時變數,別的sub是無法訪問的,嚴格意義上你的程式是錯誤的,建議你在最前面新增下面的語句:
option explicit
這樣就會對你下面sub使用a、b的語句進行報錯。
感覺你的a、b應該定義為模組變數,**如下:
2樓:濯楚雲
用static 關鍵字宣告靜態變數,靜態變數的生命週期是工作簿關閉之前,也就是說工作簿沒關閉之前它一直常駐記憶體,不會因為過程執行結束被系統釋放,**改寫如下:
option explicit
sub test()
dim i as integer
static j as integer '定義一個靜態變數if j <= 0 then j = 1 '如果不賦值,integer型別預設值會是0
for i = j to 20
if sheet1.cells(i, 1) <> "" thensheet1.cells(i, 1) = ielse
exit for
end if
next i
j = i '將i非靜態變數最後的結果賦值 靜態變數j儲存end sub
如果這個也不行,那麼就把i儲存在工作表裡面,下次執行,從工作表找回i值!
excel vba if 語句
3樓:
將**換成這個試試
for rn1=2 to 100
if worksheets(4).cells(18,1).value = worksheets(1).
cells(rn1,12).value then worksheets(4).cells(18,10).
value = worksheets(1).cells(rn1,3).value
end if
next rn1
4樓:匿名使用者
程式是執行的
只是worksheets(4).columns("j").rows(18).value
被賦值了99次
我猜這句你應該是想寫成
worksheets(4).columns("j").rows(rn1).value
才是你的本意
excel中vba,寫了如下程式,if 語句前面兩個可以執行,後邊不能執行,怎麼回事呢?
5樓:匿名使用者
1.如果if條件成立,當然不會執行else子句。而會執行if子句2.
如果誤將if條件中的相等操作符==誤寫成了賦值號=,而且=後面的值不是0,那麼這個條件將一直成立,所以不會執行else子句
3.如果else後面有多條執行語句,而又沒有加上括號,那麼當if條件不成立時只會執行else後面的第一條語句,其它的語句不在else範圍內,不管條件是否成立,它們都會執行。
4.如果根本沒有else子句,那麼...
vba for迴圈中有if,設為條件跳到下一迴圈
6樓:四舍**入
如果要跳到外層迴圈的話,必須先結束內層迴圈, 可以用exit for語句結束內層迴圈,具體的**如下:
if .... then
next
end if
vba for迴圈是一種重複控制結構,它允許開發人員有效地編寫需要執行特定次數的迴圈。
7樓:全視弗里曼
if .... then
next
end if
如果要跳到外層迴圈的話,必須先結束內層迴圈。
可以用exit for語句結束內層迴圈。
8樓:匿名使用者
你可以if ... then
goto a
end if
a:next
或者用do…loop語句
要不你直接把你的**放出來,讓大家改改算了
下列正確的賦值語句是,下面正確的賦值語句是A X Y 30 B Y X 30 C 3Y X D Y r r 每個都解釋下謝謝
正確答案是b。a中的 strtest 是一個字串,應該用char 型別。c中的 2345 是錯誤的,單引號裡面只能存一個字元d中的strtest,必須是一個變數名才可以,沒有上下文,因此算錯誤。正解 抄c c c 左邊只能是左值 左值 簡單來bai 說就是可改變的du值,如變數 所以選zhi項a和d...
C語言賦值語句,C語言中賦值語句有什麼規則要求?
選ab中取模右邊不是整數 c中賦值號左側不是一個變數 d中第二個賦值號左側不是一個變數 c語言中通過 運算子來實現賦值,有時候也用它來進行初始化,在c語言中初始化和賦值是完全兩個不同的概念。比如下面的 int a 10 這是初始化a 0 10 這是賦值 初始化是一個順序點,編譯器保證每一個順序點都執...
sql語句問題,SQL語句問題
sql語句 select a.姓名,a.計費id,b.單元編號,b.單金額,c,年月 from a,b,c where a.計費id b.計費id and b.單元編號 c.單元編號 說明 這個表結構其實b表是中間關係表,如果真實的資料結構就是這個樣子的話,那麼可能是資料量大並且經常需要查詢每個表,...