前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >VBA自定义函数:可将特别大的十进制数转换成二进制数

VBA自定义函数:可将特别大的十进制数转换成二进制数

作者头像
fanjy
发布2023-12-26 16:13:46
2020
发布2023-12-26 16:13:46
举报
文章被收录于专栏:完美Excel完美Excel

标签:VBA

Excel中的DEC2BIN()函数可以将十进制数字转换成二进制数字,但其存在局限性。本文介绍的VBA用户定义函数可以将-2147483647到2147483647(2^31-1)之间的十进制数值转换成二进制整数。如果要转换的数值为负,则返回二进制补码值(高位设置为1)。如果numBits小于表示数字所需的位数,则返回#NUM!。

这个自定义函数的代码如下:

代码语言:javascript
复制
Function LongDec2Bin(ByVal nIn As Long, _
         Optional nBits As Long = 0&) As Variant
 Dim nReqBits As Long
 Dim sOut As String
 Dim sBit As String
 Dim bNeg As Boolean
 Dim i As Long
 If nIn < 0& Then
   bNeg = True
   nIn = -(nIn + 1&)
 End If
 If nIn = 0& Then
   nReqBits = 1&
 Else
   nReqBits = Int(Log(nIn) / Log(2&)) + 1& - bNeg
 End If
 If nBits <= 0& Then nBits = nReqBits
 If nBits >= nReqBits Then
   If bNeg Then
     sOut = String(nBits, "1")
     sBit = "0"
   Else
     sOut = String(nBits, "0")
     sBit = "1"
   End If
   For i = nBits To (nBits - nReqBits + 1&) Step -1
     If (nIn - 2& * (nIn \ 2&)) > 0 _
         Then Mid(sOut, i, 1&) = sBit
     nIn = nIn \ 2&
   Next i
   LongDec2Bin = sOut
 Else
   LongDec2Bin = CVErr(xlErrNum)
 End If
End Function

注:代码整理自mcgimpsey.com,供有兴趣的朋友参考。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-12-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档