2011-08-03 48 views
13

Tôi cần giữ số 0 đứng đầu trong danh sách các số. Các con số được thêm vào như thế này (trong vòng một, nhưng điều này chỉ là một ví dụ sử dụng (1, 1):Làm cách nào để truy xuất giá trị ô Excel trong VBA như được định dạng trong WorkSheet?

Set cel = Sheet.worksh.Cells(1, 1) 
cel.ColumnWidth = 10 
cel.Value = e.Name 
cel.NumberFormat = "0000" 

đâu e.Name là số, giống như "0720" này sẽ hiển thị trên bảng chỉ. tốt, nhưng nếu tôi làm điều gì đó như thế này:

Msgbox Sheet.worksh.Cells(1, 1).Value 

tôi nhận được "720" tôi cần nó để được "0720", tôi biết tôi có thể kiểm tra bằng Len() và thêm số không như vậy, nhưng tôi đã tự hỏi. nếu có một cách tiếp cận trực tiếp hơn với đối tượng Range sẽ làm điều này cho tôi.

Trả lời

12

Sử dụng này:

Msgbox Format(Sheet.worksh.Cells(1,1).Value, "0000") 
18

Bạn đang nhầm lẫn một số với biểu diễn văn bản của nó.

Bạn muốn thuộc tính .Text, không phải .Value, nhưng sau đó, you might have problems with it.

+6

Cẩn thận với thuộc tính văn bản. Nếu ô trông như thế này "####" thì đó là những gì nó sẽ quay lại với bạn. Sử dụng phương pháp Lance Roberts an toàn hơn. Chỉ là một cảnh báo từ kinh nghiệm. – Jon49

7

Thậm chí tốt hơn, nếu bạn không chắc chắn những gì định dạng là:

MsgBox Format (Sheet.worksh.Cells (1,1) .Value, Sheet. worksh.Cells (1,1) .NumberFormat)

+0

Điều này không hoạt động như mong đợi nếu NumberFormat là Chung - khi gọi Định dạng ("397", "Chung") bạn nhận được "Ge0eral" làm kết quả của bạn. – nvuono

+0

Vấn đề là 397 được cung cấp cho Định dạng() dưới dạng văn bản chứ không phải là một số? –

Các vấn đề liên quan