2014-10-14 24 views
5

Tôi cần chuyển đổi chuỗi thành thập lục phân trong macro VBA Excel của mình.Chuyển đổi chuỗi thành Hex trong Excel VBA

tôi đã cố gắng:

Dim val As String 
val = "10" 
Dim hexVal As Integer 
hexVal = Convert.ToInt32(val, 16) 

nhưng Convert.ToInt32(val, 16) không làm việc, tôi đoán vì nó không phải VB.NET?

Dù sao, tôi có thể sử dụng CInt(val) để chuyển đổi một chuỗi thành một số nguyên nhưng nếu tôi có chuỗi đại diện của một giá trị hex, ví dụ "3366CC", làm cách nào để chuyển đổi nó thành hex để tôi có thể thực hiện tính toán hex trên đó?

Trả lời

7

Trong VBA bạn cần phải mess về với &H đen:

value = val("&H" & "10") '// 16 
value = val("&H3366CC") '// 3368652 

Sửa

Function FromHex(hexString As String) As Long 
    FromHex = Val("&H" & hexString) 
End Function 

Sau đó

resultString = hex$(FromHex("3366CC")/FromHex("A")) 

Hoặc cho hằng rõ ràng;

resultString = hex$(FromHex("3366CC")/&HA) 
+0

Làm cách nào để thực hiện phép tính hex như '3366CC/A' để nhận' 523E1'? – Tanvir

+0

Cập nhật ở trên –

+3

Lưu ý rằng nếu số hex của bạn nằm trong khoảng từ 8000 đến ffff, nó sẽ được coi là số nguyên có dấu 16 bit. Ví dụ: & hD001 được coi là -12287. Để xử lý một cách rõ ràng nó dưới dạng số nguyên có dấu 32 bit, hãy thêm số bằng &, ví dụ & hd001 & -> 53249. – Bart

5

xem xét:

Sub dural() 
    Dim val As String, hval As String 
    val = "10" 
    hval = Application.WorksheetFunction.Dec2Hex(val) 
    MsgBox hval 
End Sub 

VBA mã cần biết hoặc thực hiện một giả định về chuỗi đầu vào. Mã ở trên giả định rằng chuỗi đại diện cho một giá trị số thập phân.

Nếu chuỗi đầu vào là Hex, thì:

Sub dural2() 
    Dim val As String, hval As Long 
    val = "10" 
    hval = Application.WorksheetFunction.Hex2Dec(val) 
    MsgBox hval 
End Sub 

Đây hval thể được sử dụng số học.

+0

Điều này không chỉ chuyển đổi số thập phân sang thập lục phân? Nếu tôi có chuỗi 'val =" 3366CC "' và tôi cần phải chuyển đổi nó thành hex để thực hiện phép tính hex như '3366CC/A' để nhận' 523E1'? – Tanvir

+0

Sau đó '.Hex2Dec()' –

+0

@taa ** VBA ** cần biết cơ sở của chuỗi đầu vào .......... là _100_ thực sự là 100 thập phân hoặc 256 thập phân –

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