"excel vba bitwise left shift" Code Answer's

You're definitely familiar with the best coding language VBA that developers use to develop their projects and they get all their queries like "excel vba bitwise left shift" answered properly. Developers are finding an appropriate answer about excel vba bitwise left shift related to the VBA coding language. By visiting this online portal developers get answers concerning VBA codes question like excel vba bitwise left shift. Enter your desired code related query in the search bar and get every piece of information about VBA code related question on excel vba bitwise left shift. 

excel vba bitwise left shift

By Excel HeroExcel Hero on May 25, 2020
'Many programming languages have a bitwise left-shift operator: <<
'VBA does not. However, it can be emulated in a performant function:

Function ShiftLeft1&(ByVal n&)
    ShiftLeft1 = 2& * (n And 1073741823): If n And 1073741824 Then ShiftLeft1 = ShiftLeft1 Or &H80000000
End Function
  
MsgBox ShiftLeft1(170)    '<--displays 340      1 left-shift (170 << 1) = 340
  
'-------------------------------------------------------------------------------------------------------  

Function ShiftLeft2&(ByVal n&)
    ShiftLeft2 = 4& * (n And 536870911): If n And 536870912 Then ShiftLeft2 = ShiftLeft2 Or &H80000000
End Function
  
MsgBox ShiftLeft2(170)    '<--displays 680      2 left-shift3 (170 << 2) = 680
  
'-------------------------------------------------------------------------------------------------------  

Function ShiftLeft3&(ByVal n&)
    ShiftLeft3 = 8& * (n And 268435455): If n And 268435456 Then ShiftLeft3 = ShiftLeft3 Or &H80000000
End Function
  
MsgBox ShiftLeft3(170)    '<--displays 1360     3 left-shifts (170 << 3) = 1360
  
'-------------------------------------------------------------------------------------------------------  

Function ShiftLeft4&(ByVal n&)
    ShiftLeft4 = 16& * (n And 134217727): If n And 134217728 Then ShiftLeft4 = ShiftLeft4 Or &H80000000
End Function
  
MsgBox ShiftLeft4(170)    '<--displays 2720     4 left-shifts (170 << 4) = 2720
  
'NB: Thses function are extremely fast. But they are hard-coded for predefined number of place shifts.
'    Here is a generic function that handles all 31 possible place shifts:
        
Function ShiftLeft&(ByVal n&, Optional ByVal shifts& = 1)
    Dim d&
    Select Case shifts
        Case 1:  d = 2& * (n And 1073741823): If n And 1073741824 Then d = d Or &H80000000
        Case 2:  d = 4& * (n And 536870911):  If n And 536870912 Then d = d Or &H80000000
        Case 3:  d = 8& * (n And 268435455):  If n And 268435456 Then d = d Or &H80000000
        Case 4:  d = 16& * (n And 134217727): If n And 134217728 Then d = d Or &H80000000
        Case 5:  d = 32& * (n And 67108863):  If n And 67108864 Then d = d Or &H80000000
        Case 6:  d = 64& * (n And 33554431):  If n And 33554432 Then d = d Or &H80000000
        Case 7:  d = 128& * (n And 16777215): If n And 16777216 Then d = d Or &H80000000
        Case 8:  d = 256& * (n And 8388607):  If n And 8388608 Then d = d Or &H80000000
        Case 9:  d = 512& * (n And 4194303):  If n And 4194304 Then d = d Or &H80000000
        Case 10: d = 1024& * (n And 2097151): If n And 2097152 Then d = d Or &H80000000
        Case 11: d = 2048& * (n And 1048575): If n And 1048576 Then d = d Or &H80000000
        Case 12: d = 4096& * (n And 524287):  If n And 524288 Then d = d Or &H80000000
        Case 13: d = 8192& * (n And 262143):  If n And 262144 Then d = d Or &H80000000
        Case 14: d = 16384& * (n And 131071): If n And 131072 Then d = d Or &H80000000
        Case 15: d = 32768 * (n And 65535):   If n And 65536 Then d = d Or &H80000000
        Case 16: d = 65536 * (n And 32767&):  If n And 32768 Then d = d Or &H80000000
        Case 17: d = 131072 * (n And 16383&): If n And 16384& Then d = d Or &H80000000
        Case 18: d = 262144 * (n And 8191&):  If n And 8192& Then d = d Or &H80000000
        Case 19: d = 524288 * (n And 4095&):  If n And 4096& Then d = d Or &H80000000
        Case 20: d = 1048576 * (n And 2047&): If n And 2048& Then d = d Or &H80000000
        Case 21: d = 2097152 * (n And 1023&): If n And 1024& Then d = d Or &H80000000
        Case 22: d = 4194304 * (n And 511&):  If n And 512& Then d = d Or &H80000000
        Case 23: d = 8388608 * (n And 255&):  If n And 256& Then d = d Or &H80000000
        Case 24: d = 16777216 * (n And 127&): If n And 128& Then d = d Or &H80000000
        Case 25: d = 33554432 * (n And 63&):  If n And 64& Then d = d Or &H80000000
        Case 26: d = 67108864 * (n And 31&):  If n And 32& Then d = d Or &H80000000
        Case 27: d = 134217728 * (n And 15&): If n And 16& Then d = d Or &H80000000
        Case 28: d = 268435456 * (n And 7&):  If n And 8& Then d = d Or &H80000000
        Case 29: d = 536870912 * (n And 3&):  If n And 4& Then d = d Or &H80000000
        Case 30: d = 1073741824 * (n And 1&): If n And 2& Then d = d Or &H80000000
        Case 31: If n And &H1& Then d = &H80000000 Else d = &H0&
        Case 0:  d = n
    End Select
    ShiftLeft = d
End Function

MsgBox ShiftLeft(1, 24) '<--displays 16777216     24 left-shifts (1 << 24) = 16777216
                                                                      
                                                                      

Source: academy.excelhero.com

Add Comment

9

excel vba bitshift right

By Excel HeroExcel Hero on May 24, 2020
'Many languages have a bitwise signed-right-shift operator: >>
'VBA does not. However, it can be emulated in a performant manner:

Dim n as Long

n = 6
n = (n And -2) \ 2		'1 signed-right-shift (6 >> 1) = 3

n = 8
n = (n And -4) \ 4		'2 signed-right-shifts (8 >> 2) = 2

n = 170
n = (n And -8) \ 8		'3 signed-right-shifts (170 >> 3) = 21

n = -170
n = (n And -16) \ 16	'4 signed-right-shifts (-170 >> 4) = -11

'Notice the pattern:
'n = (n And -2^shfits) \ 2^shifts

'Important: Exponentiation is SLOW. It is much faster to use the hard coded
'           result of the exponentiation, as in the examples above.

n = -2023406815
n = (n And -16777216) \ 16777216 '24 signed-right-shifts (-2023406815 >> 24) = -121


'Imporatant: Since a Long Integer in VBA is signed, (n >> 31) needs special
'processing. The pattern is different:

n = 2147483647
n = n And -2147483648	'31 signed-right-shifts (-2147483647 >> 31) = 0

'Here is a VBA function that encapsulates the details:

Function ShiftRight&(ByVal n&, Optional ByVal shifts& = 1)
    Dim d&
    Select Case shifts
        Case 1:  d = 2&
        Case 2:  d = 4&
        Case 3:  d = 8&
        Case 4:  d = 16&
        Case 5:  d = 32&
        Case 6:  d = 64&
        Case 7:  d = 128&
        Case 8:  d = 256&
        Case 9:  d = 512&
        Case 10: d = 1024&
        Case 11: d = 2048&
        Case 12: d = 4096&
        Case 13: d = 8192&
        Case 14: d = 16384&
        Case 15: d = 32768
        Case 16: d = 65536
        Case 17: d = 131072
        Case 18: d = 262144
        Case 19: d = 524288
        Case 20: d = 1048576
        Case 21: d = 2097152
        Case 22: d = 4194304
        Case 23: d = 8388608
        Case 24: d = 16777216
        Case 25: d = 33554432
        Case 26: d = 67108864
        Case 27: d = 134217728
        Case 28: d = 268435456
        Case 29: d = 536870912
        Case 30: d = 1073741824
        Case 31: ShiftRight = CBool(n And &H80000000): Exit Function
        Case 0:  ShiftRight = n: Exit Function
    End Select
    ShiftRight = (n And -d) \ d
End Function
    
'Don't be off-put at the size of the function. This is many times faster than 
'any other VBA function that carries out bitwise signed-right-shfits. It is
'thousands of times faster than calling Excel's 
'WorksheetFunction.Bitrshift() method.
   
'However, remember that function calls are expensive in general. The inline 
'examples above are approximately 20 times faster than calling this highly
'optimized function. But you have to get the math right. The function
'takes care of it for you.

Source: academy.excelhero.com

Add Comment

16

All those coders who are working on the VBA based application and are stuck on excel vba bitwise left shift can get a collection of related answers to their query. Programmers need to enter their query on excel vba bitwise left shift related to VBA code and they'll get their ambiguities clear immediately. On our webpage, there are tutorials about excel vba bitwise left shift for the programmers working on VBA code while coding their module. Coders are also allowed to rectify already present answers of excel vba bitwise left shift while working on the VBA language code. Developers can add up suggestions if they deem fit any other answer relating to "excel vba bitwise left shift". Visit this developer's friendly online web community, CodeProZone, and get your queries like excel vba bitwise left shift resolved professionally and stay updated to the latest VBA updates. 

VBA answers related to "excel vba bitwise left shift"

View All VBA queries

VBA queries related to "excel vba bitwise left shift"

excel vba bitwise left shift vba left shift operator excel vba zero-fill right shift excel vba zerofill right shift excel vba signed right shift operator excel vba shift range excel vba bitshift left excel vba left word from Long Integer vba zero-fill right shift vba zero fill right shift excel vba delete sheets and stop excel asking the user to confirm excel-vba how to convert a column number into an excel column excel vba get list of Excel files in a folder excel vba equivalent to Excel's mod function excel vba can a vba function return a range? excel vba how to unit test vba code Excel formula to reference CELL TO THE LEFT excel vba how to activate a specific worksheet excel vba create ADO recordset from table excel vba find get last row in column excel vba write string to text file excel vba check if a string contains another string excel vba last day of month excel vba base64 decode excel vba string to binary excel vba how to reset usedrange excel vba second byte from INTEGER excel vba set cell format to date excel vba determine number of elements in a 1D array excel vba ubound on a multidimensional array excel-vba get integer high byte excel vba check if directory exists excel vba recursive example factorial function excel vba factorial excel vba add one hour excel vba convert number to binary string excel vba arraylist excel-vba long integer value to bits excel vba cells background color excel vba initialize or detect NaN, +infinity, -infinity, special values excel vba last row excel vba constant excel vba wait milliseconds excel vba pause excel-vba pause excel-vba wait excel vba exit for next loop excel vba check if key is in collection excel vba check if string entirely uppercase excel vba Populating a combobox on a userform from a range of cells excel vba initialize or detect NaN infinity infinity special values excel vba test or check if sheet exists excel vba open text file excel vba determine number of elements in an array excel vba last row in range excel vba difference between DateValue and CDate excel vba date to unix timestamp and vice versa excel vba check if string entirely alpha excel vba low byte from INTEGER excel vba how to get the old value of a changed cell excel vba query access database excel vba check if all substrings in list are in string excel vba check if string entirely lowercase excel vba get the path of current workbook excel vba stack memory structure filo excel vba clear contents and formatting of cell with a single command excel vba ceiling function excel vba queue fifo memory structure first in first out excel vba compare 2 rows excel vba create recordset from table excel vba ADOX.Column append column adBoolean error excel vba check for uninitialized or empty array excel vba delete rows in range excel vba difference between .value .value2 .text .formula .formular1c1 excel vba range.text excel vba select multiple ranges excel vba convert text YYYYMMDD to date excel vba write to the windows registry excel vba freeze panes without select excel vba get the workbook full file name with path excel vba clean extra spaces from an entire range excel vba read registry key value excel vba remove all non alphanumeric characters from a string excel vba word count in string excel vba find last column excel vba export sheet as a csv without losing focus of my current workbook excel vba folder exist excel vba create in-memory ADO recordset from table excel vba pass array to and from jscript Excel VBA Function Overloading and UDF excel vba make word from bytes excel vba convert cells(1,1) into A1 and vice versa excel vba force recalculation excel vba list all files in folder and subfolders excel vba bold some text in cell excel vba double quotes in string literal excel vba msgbox excel vba least common multiple excel vba get ordinal number from cardinal number excel vba property let get excel vba check if multiple substrings in string excel vba replace tokens in a template string excel vba how to programmatically remove the marching ants after range copy excel vba for next loop skip excel vba function to convert column number to letter vba how to convert a column number into an Excel column excel vba determine number of elements in a 2D array excel vba array sort excel vba date to string conversion excel vba add module programmatically excel vba what happens to range objects if user deletes cells excel vba class get set property msgbox yes no vba excel excel vba make cell visible excel vba if sunday or staurday excel vba how to get a range's full address including sheet name excel vba get column number from column name excel vba count substring in string excel vba add sheet excel vba greatest common denominator excel vba swap byte order excel vba get low byte from INTEGER excel vba Run a Macro every time sheet is changed excel vba password protect excel vba while... "end while" doesn't work? excel vba close form escape key excel vba stack excel vba manipulate arrays without loops excel vba pass array to scriptcontrol excel vba multiple string search with InStr function excel vba generate guid uuid excel vba BitToLong excel vba clean non breaking space excel vba display milliseconds high precision excel vba dedupe array excel vba array to arraylist excel vba array of random numbers excel vba InStrCount excel vba delete empty rows excel vba first byte from INTEGER excel vba Imitating the "IN" operator from python excel vba color text in cell excel vba check if string entirely numeric excel vba low word from Long Integer excel vba word count excel vba resize range excel vba check if every substring in list are in string excel vba text to binary string excel vba string to bits excel vba right word from Long Integer excel vba How to determine if a date falls on the weekend? excel vba check if a string only contains alpha characters excel vba read text from clipboard excel vba stack filo excel vba make a short integer from two bytes excel vba create named range excel vba binary string to long excel vba how to declare a global variable excel vba set range borders like grid excel vba stack memory structure filo first in last out excel vba alternate row color excel vba check if a string only contains letters excel vba Case-Insensitive String Comparison excel vba isalpha excel vba Refreshing all pivot tables in workbook excel vba get the workbook full filename with path Excel vba range to array excel vba exit for loop excel vba text compression excel vba get user selected range excel vba convert 2 Short integers to a Long integer excel vba hide columns excel vba how to check if a worksheet cell is empty excel vba highlight cells using the hex color value within the cells excel vba swap endian excel vba error 424 object required when calling sub excel vba min function excel vba force array elements to alphanumeric excel vba bitshift right excel vba get column name from number excel vba set border around range excel vba quickest way to clear sheet contents excel vba create a bitmask excel vba wait excel vba convert and entire range to uppercase excel vba binary from long integer value excel vba compress string excel vba "code execution has been halted” excel vba string compression excel vba count words excel vba How to URL encode a string excel vba code execution has been halted Excel VBA hide sheets with names in array excel vba hide multiple sheets at once excel vba check cell not empty excel vba queue excel vba long integer to bits excel vba last row of range

Browse Other Code Languages

CodeProZone