Thread: DEC2HEX
View Single Post
  #3   Report Post  
Posted to microsoft.public.excel.programming
dk[_2_] dk[_2_] is offline
external usenet poster
 
Posts: 21
Default DEC2HEX

On Mar 17, 8:30*am, Francis Ang
wrote:
I did a further check and found out that if the decimal values are 112, 128,
144, 160, 176, 192, 208, 224 and 240 no hex values will be returned.



"Francis Ang" wrote:
I am trying to convert Decimal to Hex and found the following codes in Excel
community website. *The function works fine except that when I enter decimal
values such as 112 or 160 or 208 nothing happens; there is no hex value
returned. *These are the only numbers that I noticed so far, there could be
more! *


Any reason for this?


Any help would be greatly appreciated.


Public Function Decimal_To_Hex(ByVal vntDecimal_Value As Variant) As String
'--------------------------------------------------------------------------*--
' Experts Exchange Question:
' Home \ All Topics \ Applications \ MS Office \ Excel
'
'http://www.experts-exchange.com/Applications/MS_Office/Excel/Q_215474....
' Creating Column that does hexidecimal math
'
' Copyright (c) 2005 Clearlogic Concepts (UK) Limited
' N.Lee [http://NigelLee.info] - 1 September 2005
'--------------------------------------------------------------------------*--
* *Dim intHex_Value * * * * * * * * * * * * * * * * * * *As Integer
* *Dim intLoop * * * * * * * * * * * * * * * * * * * * * As Integer
* *Dim vntDec_Value * * * * * * * * * * * * * * * * * * *As Variant
* *Dim strReturn * * * * * * * * * * * * * * * * * * * * As String


* *On Error GoTo Err_Decimal_To_Hex


* *If Len(vntDecimal_Value) 14 Then
* * * strReturn = "* ERROR *"
* *Else
* * * strReturn = ""
* * * vntDec_Value = CDec(vntDecimal_Value)


* * * For intLoop = Len(vntDecimal_Value) - 1 To 0 Step -1
* * * * * intHex_Value = Int(vntDec_Value / (16 ^ intLoop))
* * * * * vntDec_Value = vntDec_Value - (intHex_Value * (16 ^ intLoop))
* * * * * strReturn = strReturn & Hex(intHex_Value)
* * * Next intLoop
* *End If


Exit_Decimal_To_Hex:


* *On Error Resume Next


* *If Left$(strReturn, 1) = "0" Then
* * * strReturn = StrReverse(strReturn)
* * * strReturn = StrReverse(Left$(strReturn, InStr(strReturn, "0") - 1))
* *End If


* *Decimal_To_Hex = strReturn


* *Exit Function


Err_Decimal_To_Hex:


* *On Error Resume Next


* *strReturn = "* ERROR *"


* *Resume Exit_Decimal_To_Hex


End Function- Hide quoted text -


- Show quoted text -


I did not go through the code that you have posted but you can use
this code:

Function DecToHex(ByVal x As Variant) As String

Dim y

x = CDec(x)
Do
y = (x / 16 - Int(x / 16)) * 16
If y < 10 Then
DecToHex = y & DecToHex
Else
DecToHex = Chr$(y + 55) & DecToHex
End If
x = Int(x / 16)
Loop While x
End Function