Board logo

標題: [發問] 如何正確宣告,避免強制轉型時降低速度 [打印本頁]

作者: PKKO    時間: 2015-5-29 10:01     標題: 如何正確宣告,避免強制轉型時降低速度

本帖最後由 PKKO 於 2015-5-29 10:02 編輯

EX :
  1. For j = 1 To UBound(Rng4, 2)
  2.     '找出陣列的C
  3.      If CStr(RNG(1, i)) = CStr(RNG2(1, j)) Then
  4.          c = j
  5.          Exit For
  6.      End If
  7. Next
複製代碼
這是原本的作法
比較的時候要兩邊同時轉型成字串,筆免因型別不同而沒有正確比對
但這樣似乎比較慢

有甚麼方式可以在一開始就讓rng這個陣列的內容都限制為字串呢?
可是陣列來源是來自於 Rng=[a1].currentregion
作者: GBKEE    時間: 2015-5-29 13:11

回復 1# PKKO
  1. Option Explicit
  2. Sub Ex()
  3.     Dim Ar() As String, Ar1(), i, ii
  4.     Ar1 = UsedRange.Value
  5.     ReDim Ar(1 To UBound(Ar1, 1), 1 To UBound(Ar1, 2))
  6.      For i = 1 To UBound(Ar1, 1)
  7.         For ii = 1 To UBound(Ar1, 2)
  8.             Ar(i, ii) = Ar1(i, ii)
  9.         Next
  10.      Next
  11. End Sub
複製代碼
[attach]21061[/attach]
作者: PKKO    時間: 2015-5-29 14:12

回復 2# GBKEE

感謝超版大大的回覆

但我想問的是這個部分,要如何能這樣宣告?
    Dim Ar() As String, Ar1() As String, i, ii
    Ar1() = [a1].CurrentRegion'這行會錯誤
作者: bobomi    時間: 2015-5-29 14:46

本帖最後由 bobomi 於 2015-5-29 14:56 編輯

EXCEL 出來的全部都是 Variant
你無從改變他
強制轉型是必然的

VB也沒有支援陣列直接轉型這種東西 (  AR_String( ) = AR_Variant( )   )
作者: PKKO    時間: 2015-5-29 16:11

回復 4# bobomi


    感謝!




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