Excel.Tips.Net Welcome toExcel.Tips.Net

Helpful Links

Tips.Net Home
ExcelTips Home
Ask an Excel Question
Make a Comment

Tips.Net Store

ExcelTips FAQ
ExcelTips Premium

Learn Access Now
Free Printable Forms

Beauty Tips
Car Tips
Cleaning Tips
College Tips
Cooking Tips
Excel2007 Tips
ExcelTips
Family Tips
Gardening Tips
Health Tips
Home Tips
Legal Tips
Money Tips
Organizing Tips
Pest Tips
Pet Tips
Wedding Tips
Word2007 Tips
WordTips

Advertise on the
ExcelTips Site

Newest Tips

Removing Borders

Converting to Octal

Filtering Columns for Unique Values

Printing Multiple Worksheets on a Single Page

Changing the Default Font

Creating a Drawing Object

Determining a Value of a Cell

 

Using BIN2DEC In a Macro

Summary: Need a way, in a macro, to convert binary numbers into their decimal equivalents? There are two ways you can get the desired conversion, as described in this tip. (This tip works with Microsoft Excel 97, Excel 2000, Excel 2002, Excel 2003, and Excel 2007.)

Most of Excel's worksheet functions can be accessed in VBA by using the WorksheetFunction object. Some functions may not seem to be available, however. One such function is BIN2DEC, which converts a binary value to a decimal value. The reason it isn't available is that BIN2DEC isn't really an Excel worksheet function—it is part of the Analysis ToolPak add-in.

That being the case, you have two options: you can either load the VBA equivalent of the Analysis ToolPak, or you can create your own BIN2DEC function in VBA. To do the first, make sure that in Excel you install the Analysis ToolPak – VBA add-in. If it is not listed in the available add-ins, use Windows to search for the file ATPVBAEN.XLA. (If you are using a language version of Excel other than English, then the "EN" portion of the file will be different.) This is the actual add-in you want to enable.

Once you've enabled the add-in, display the VBA Editor and choose Tools | References to display the References dialog box. Make sure the atpvbaen.xla reference is selected. Close the dialog box, and you can then use BIN2DEC just like you would any other worksheet function.

The other option is to create your own BIN2DEC function. The following is an example of a function that accepts a string that contains the binary digits and returns a numeric value that represents the decimal value of that string.

Function Bin2Dec(sMyBin As String) As Long
    Dim x As Integer
    Dim iLen As Integer

    iLen = Len(sMyBin) - 1
    For x = 0 To iLen
        Bin2Dec = Bin2Dec + _
          Mid(sMyBin, iLen - x + 1, 1) * 2 ^ x
    Next
End Function

This function actually doesn't have the same limitations as the BIN2DEC worksheet function; it will work with binary numbers containing more than 10 digits.

ExcelTips is your source for cost-effective Microsoft Excel training. This tip (3063) applies to Microsoft Excel versions: 97 | 2000 | 2002 | 2003 | 2007

Got the Time? Understanding the ins and outs of working with times and dates can be confusing. Remove the confusion--ExcelTips: Times and Dates is an invaluable resource for learning how best to work with times and dates.
 
Check out ExcelTips: Times and Dates today!