Board logo

標題: 溢位問題 使用 CLbg 也是 [打印本頁]

作者: ag324    時間: 2011-11-2 09:14     標題: 溢位問題 使用 CLbg 也是

For k = 1 To 24
For i = 1 To 113
ells(CLng((i - 1) * 462) + CLng(k - 1) * CLng(52319) + i + 1, 1).Select
現在 k=1 i=72 就會溢位了

我看國外網站有說明 各種的長度
不過我不知道該怎麼設
dim cells
或者把 CLng 改成比如說 double or string
他都跑出錯誤訊息....   


Byte -- 1 byte -- 0 to 255

Boolean -- 2 bytes -- True or False

Integer -- 2 bytes -- -32,768 to 32,767

Long (long integer) -- 4 bytes -- -2,147,483,648 to 2,147,483,647

Single(single-precision floating-point) -- 4 bytes -- -3.402823E38 to -1.401298E-45 for negative values; 1.401298E-45 to 3.402823E38 for positive values

Double(double-precision floating-point) -- 8 bytes -- -1.79769313486231E308 to -4.94065645841247E-324 for negative values; 4.94065645841247E-324 to 1.79769313486232E308 for positive values

Currency(scaled integer) -- 8 bytes -- -922,337,203,685,477.5808 to 922,337,203,685,477.5807

Decimal -- 14 bytes -- +/-79,228,162,514,264,337,593,543,950,335 with no decimal point; +/-7.9228162514264337593543950335 with 28 places to the right of the decimal; smallest non-zero number is
+/-0.0000000000000000000000000001

Date -- 8 bytes -- January 1, 100 to December 31, 9999

Object -- 4 bytes -- Any Object reference

String (variable-length) -- 10 bytes + string length -- 0 to approximately 2 billion

String(fixed-length) -- Length of string 1 to approximately 65,400

Variant(with numbers) -- 16 bytes -- Any numeric value up to the range of a Double

Variant(with characters) -- 22 bytes + string length -- Same range as for variable-length String
作者: GBKEE    時間: 2011-11-2 10:46

本帖最後由 GBKEE 於 2011-11-2 10:50 編輯

回復 1# ag324
  1. Sub Ex()
  2.     Dim i As Long, k As Long
  3.     For k = 1 To 24
  4.         For i = 1 To 113
  5.             Cells(CLng((i - 1) * 462) + CLng(k - 1) * CLng(52319) + i + 1, 1).Select
  6.         Next
  7.     Next
  8. End Sub
複製代碼
變數的範圍需配合公式乘績值
  1. Sub Ex溢位示範()
  2. Dim i As Integer, k As Integer
  3. For k = 1 To 24
  4.     For i = 1 To 113
  5.      Debug.Print k & " : " & i
  6.      Debug.Print (i - 1) * 462 + (k - 1) * 52319 + i + 1   '即時運算視窗中印列 公式的乘績
  7.      '因為 k=1 i=72公式的乘績> Integer的範圍 32,767 就會溢位了
  8.    
  9.     Next
  10. Next

  11. End Sub
複製代碼

作者: ag324    時間: 2011-11-2 15:55

感謝 變數的地方 被當作是integer 所以我條下面的 CLeng 才會沒用
現在可以了




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)