2017-10-19 33 views
0

我從幾列填充數組。在一列中有時會有數字,字母或它們的組合。 源中的數字被格式化爲文本。意思是我領先零。 當數組填充後,它將文本轉換爲數字。這意味着如果適用,我會丟失我的前導零。但我需要這個。分配給數組的值被存儲爲數字,而不是文本

我是怎麼想那麼遠:

  1. 格式化片,其中陣列將其張貼到(不會因爲數組中的值的工作已經爲數字,失去了前導零的);
  2. Dim myArray() as Variant更改爲Dim myArray() as String;
  3. 更改Dim i, j, k as LongDim i, j, k as String;
  4. 使用Cstr將數據中的數據存儲爲字符串;

這是我的代碼我現在有:

numberOfRecords = Range(Selection, Selection.End(xlDown)).Rows.Count + 1 

Dim myArray() As String 
Dim i, j, k As Long 
k = 0 
ReDim myArray(numberOfRecords, 2 To 6) As String 

For i = 2 To numberOfRecords 
    If IsError(Application.Match(Cells(i, "A").Value, 
     Sheets("SE16N").Range("A:A"), 0)) Then 
      For j = 2 To 6 
       myArray(k, j) = CStr(Cells(i, j).Text) 
       Debug.Print myArray(k, j) 'Just to check how the array is storing data 
      Next j 
     k = k + 1 
    End If 
Next i 

我希望有人能幫助我。

我只能發佈2個鏈接,因爲我在Stack Overflow中沒有10的聲望。因此只能肯定我有零和本地窗口視圖。

With leading zero's Local Windows view

+3

您是否知道'朦朧I,J,K爲String'意味着i和j是變種k是字符串?此外,爲了保留前導零,請使用'.Text'屬性而不是'.Value'屬性。 – braX

+1

使用'細胞(I,J).Text'將返回什麼是真正顯示,而不是將忽略格式化值。 – SJR

+0

當你使用'i,j,k'作爲數值指標時,'Dim i,j,k As String'也顯得有點奇怪。你可能想'昏暗我只要,J長,K作爲Long' –

回答

0

我發現了一種解決此問題的方法:我將相應列的格式手動更改爲文本,這是一次性工作。 最初在我的代碼中,我有range.clear,但現在我使用range.clearcontent。 Clearcontent不會刪除列的格式。 現在它像一個魅力。 :)

0

從細胞中獲取值的最簡單方法是:

Dim vData As Variant 
vData = Range("A2:A10").Value 

你應該得到的字符串作爲字符串和數字爲數字。

+0

Hi jkpieterse, 這就是整個論點。數字也需要是字符串。如果我使用數字,我將失去我的領先零。 – Dennis

+0

存儲在格式爲文本的單元格中的數字是文本您是否嘗試過我的示例,並查看View,Locals窗口中vData的結果? – jkpieterse

+0

如果我根據您的代碼很短的函數,我得到一個類型不匹配錯誤(類型13): 次試驗(+) 昏暗VDATA爲Variant DATA =工作表(「源」)範圍(「E1:E10」 ).Value'我在E列中取了一個範圍,因爲有前導零的數字 Debug.Print vData End Sub – Dennis

相關問題