2015-04-26 17 views
0
Private Sub Submit_Click() 
Dim ndc, qty As String 


ndc = "'" & TextBox1.Value 
qty = TextBox2.Text 

ndc = Right(ndc, TextBox1.TextLength - 1) 
ndc = Left(ndc, TextBox1.TextLength - 2) 

上面的代碼用於驗證在數字的前面和後面用「/」讀入的UPC數據。號碼可得長短不一,這裏是一個示例:中功能excel跳過用戶窗體中的0文本

\357237031056\ 
\354838555509\ 
\001798022021\ 

這裏是我的結果:

357237031056 
354838555509 
1798022021 

所以最後一項是在陷入困境是,什麼原因呢?我使用「'」將它格式化爲文本,我也嘗試過使用.Text,但仍然出現同樣的問題。

+1

'Dim ndc,qty As String' - 這裏'ndc'是一個變體(只有'qty'被聲明爲String)。嘗試將'ndc'聲明爲String。 –

+0

該值只是簡單地將帶有或者不帶有前導零的文本轉換爲實際的數字。您還應該注意從文本的默認左對齊轉換爲默認右對齊的真實數字。你是否希望使用真正的數字(使用自定義數字格式來顯示前導零或文本看起來像一個數字,但實際上具有前導零? – Jeeped

+0

如果我按原樣運行代碼並且使用'Debug.Print ndc'我得到'001798022021',那麼你用ndc做什麼,所以它最終沒有前導零?作爲@Jeeped提到這看起來像自動數字轉換,這將發生,如果你將該值放入一個單元格 –

回答

1

忽略我的意見 - 代碼的結果如下,如果你申報ndc爲字符串(雖然你應該做的,如果是這樣的類型,你想讓它持有)

使用的\001798022021\輸入值不會改變 -

Private Sub Tester() 

Dim ndc, qty As String 

    ndc = "'" & TextBox1.Value 

    ndc = Right(ndc, TextBox1.TextLength - 1) 
    ndc = Left(ndc, TextBox1.TextLength - 2) 

    Debug.Print ndc   ' 001798022021 

    Range("A1").Value = ndc ' 1798022021 

    Range("A2").NumberFormat = "@" 
    Range("A2").Value = ndc ' 001798022021 

End Sub 
+0

真棒,所以看起來excel在輸入時轉換爲數字,使用你的提示並將numberformat更改爲「@」,我不知道這意味着什麼,但它起作用!所以習慣了java和c編碼,這個vba看起來很古怪。 – user3866172

+0

「@」的意思是「文字」 –

+0

真棒!非常感謝! – user3866172