標題:
[發問]
宣告問題
[打印本頁]
作者:
PKKO
時間:
2015-5-6 10:12
標題:
宣告問題
超版大大們都會使用Option Explicit 來限制程式碼一定要宣告
但想請教一下,下面這行程式碼是rng=某位置的陣列,我要如何可以宣告出rng陣列的內容值都是BYTE呢?
rng=[a1].resize[7,7]
a=rng(1,1)
我原本的寫法會出現錯誤
dim rng as byte
或是dim rng() as byte
作者:
stillfish00
時間:
2015-5-6 16:46
回復
1#
PKKO
dim rng() as byte 沒錯啊,但你要賦值時要用CByte轉換
Option Explicit
Sub Test()
Dim i, j
Dim x(1 To 7, 1 To 7) As Byte
With [a1].Resize(7, 7)
For i = 1 To UBound(x)
For j = 1 To UBound(x, 2)
x(i, j) = CByte(.Cells(i, j).Value)
Next
Next
End With
End Sub
複製代碼
作者:
PKKO
時間:
2015-5-6 23:37
回復
2#
stillfish00
我剛測試,會失敗
但若真要如此,似乎宣告為BYTE有點辛苦,而且速度上無法增加多少對嗎?
作者:
stillfish00
時間:
2015-5-7 20:17
回復
3#
PKKO
1. 並非程式碼較長或使用迴圈速度一定就比較慢
2. 速度快不快是看你怎麼運算..如果只是取出7x7的值根本不用考慮到速度
3. Byte類型的計算會比Integer快 , 你確定嗎?
作者:
PKKO
時間:
2015-5-8 17:15
本帖最後由 PKKO 於 2015-5-8 17:18 編輯
回復
4#
stillfish00
S大您好
我並不確定BYTE會比integer快
因為我自己實驗的時候發現,沒宣告居然還比宣告為BYTE之後快= =?
我不曉得原因在哪~
主要是針對下列程式碼
一個7*7的陣列
想要一次七個比對一組六個號碼
看有幾個號碼符合
若符合用陣列將值記憶起來
下方是我的程式碼?
不曉得有沒有可以一次比對的程式碼?
或是比下方更快的程式碼?
'宣告物件
Dim D As Object
Set D = CreateObject("SCRIPTING.DICTIONARY") '字典物件
For q = 1 To 7
D.RemoveAll
For j = 1 To 7
D.Add rng(j, q), j
Next
For j = 1 To y
r = 0
For k = 1 To 6
If D.Exists(Rng2(j, k)) Then r = r + 1
Next
If r > 0 Then myArray1(r) = myArray1(r) + 1
Next
Next
複製代碼
作者:
bobomi
時間:
2015-5-8 17:45
回復
5#
PKKO
你是在寫樂透方面的程式嗎
作者:
PKKO
時間:
2015-5-8 20:32
回復
6#
bobomi
哈哈,無聊幫朋友寫的,我個人認為速度已經到極限了,但想說這裡高手雲集,可能還有更快的方式
歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)