返回列表 上一主題 發帖

[發問] 請教語法是哪裡出問題?

抱歉!我又來打擾了。上次有討論過。但是這一次有做修正,卻出現問題
語法如下:
    Dim  ...
skyutm 發表於 2012-8-29 23:48


經測試的結果,
若執行過 a11 = b11 = c11 = d11 = e11 = f11 = 0 以後,
a11 固定會被改成 -1
我猜有可能是該指令被解晰成 :
a11= (a11 = 0) (中間的指令都被直接忽略掉了)
會這樣判斷是因為上式若改為 = 1 或 = 5 時,
a11 都會 = 0
而若變更中間參數名稱則那些參數值都不會變. (然而若有非事先定義的參數名稱出現,則會新增該參數出來)

偷懶的方法是在該行後再加上一個 :
a11 = 0

或是將該行改成 :
a11 = 0 : b11 = 0 : c11 = 0 : d11 = 0 : e11 = 0 : f11 = 0

其實不跑該行也是可以的,
因為整數於 Dim 後初值本來就是 0

C 的語法有些是不能在 Basic 上用的,
因為可能會造成非我們所預期的結果.

TOP

回復 21# skyutm
善用 With 與 縮排(次一級區塊內的程式左方多幾個空格) 會讓程式更容易閱讀與維護:
  1. Sub Worksheet_Activate()
  2.     '個人成績單標題列↓'
  3.     Dim a, b, c, x, y
  4.    
  5.     With Sheets("基本設定")
  6.       a = .Range("j1").Value
  7.       b = .Range("j2").Value
  8.       c = .Range("j3").Value
  9.     End With
  10.    
  11.     d = Fix(c / 2)
  12.    
  13.     For i = 0 To d
  14.       With Sheets("期中評量")
  15.         x = .Range("a" & 3 + i * 2).Value
  16.         y = .Range("b" & 3 + i * 2).Value
  17.         x1 = .Range("a" & 4 + i * 2).Value
  18.         y1 = .Range("b" & 4 + i * 2).Value
  19.       End With
  20.    
  21.       With Sheets("期中成績單")
  22.         .Range("a" & 1 + 12 * i).Value = a & "年" & b & "班 期中評量 成績單" & "(" & x & ")" & y
  23.         .Range("o" & 1 + 12 * i).Value = a & "年" & b & "班 期中評量 成績單" & "(" & x1 & ")" & y1
  24.       End With
  25.     Next i
  26.     '個人成績單標題列↑'
  27. End Sub
複製代碼

TOP

        靜思自在 : 閒人無樂趣,忙人無是非。
返回列表 上一主題