"vba left shift operator" 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 "vba left shift operator" answered properly. Developers are finding an appropriate answer about vba left shift operator related to the VBA coding language. By visiting this online portal developers get answers concerning VBA codes question like vba left shift operator. Enter your desired code related query in the search bar and get every piece of information about VBA code related question on vba left shift operator. 

vba left shift operator

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

2

excel vba signed right shift operator

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

6

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

VBA answers related to "vba left shift operator"

View All VBA queries

VBA queries related to "vba left shift operator"

vba left shift operator excel vba bitwise left shift excel vba signed right shift operator excel vba zero-fill right shift vba zero-fill right shift excel vba zerofill right shift vba zero fill right shift excel vba shift range excel vba bitshift left excel vba left word from Long Integer excel vba Imitating the "IN" operator from python office vba like operator vba mod operator error excel vba imitating the in operator from other languages excel vba can a vba function return a range? vba listindex select multiple items vba excel vba how to unit test vba code Excel formula to reference CELL TO THE LEFT vba first cell in range how to convert arraylist to array in vba excel vba how to activate a specific worksheet excel vba create ADO recordset from table vba check if file exists 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 vba make a short integer from two bytes excel vba string to binary excel vba how to reset usedrange vba int to string vba remove the first character of string vba end for loop excel vba second byte from INTEGER excel vba set cell format to date vba string to double excel vba determine number of elements in a 1D array excel vba ubound on a multidimensional array excel-vba get integer high byte vba string to integer excel vba check if directory exists xl vba check for folder excel vba recursive example factorial function excel vba factorial xl vba double quotes in string literal vba should i use .value .value2 vba round number excel vba delete sheets and stop excel asking the user to confirm 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 vba continue for each loop excel vba initialize or detect NaN, +infinity, -infinity, special values vba dictionnary excel vba last row excel vba constant excel vba wait milliseconds excel vba pause excel-vba pause excel-vba wait vba for each array excel vba exit for next loop excel vba check if key is in collection vba clear a worksheet 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 vba BitsToLong excel vba test or check if sheet exists vba function sheet exists xl-vba function sheet exists excel vba open text file vba parse xml file excel vba determine number of elements in an array vba double quote vba event variable change vba replace 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 how to do error handling in access vba vba reverse string 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 vba declare api 64 bit 32 bit vba set row height 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 vba sheet hide unhide how to check is the value enterd is a number or text in vba vba ignore case excel vba ceiling function excel vba queue fifo memory structure first in first out vba delete array element vba redim preserve vba convert 2 bytes to an integer vba make long from two words excel vba compare 2 rows excel vba create recordset from table vba format string as cash vba sheets add at end vba ubound array 2-dimensional 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 vba convert endianess vba make long from two shorts how to INPUT text in shape with enter and spacein vba vba BitToLong vba collection remove how to convert binary to decimal in vba code vba multiple dim excel vba select multiple ranges vba create ADO recordset from table excel vba convert text YYYYMMDD to date excel vba write to the windows registry vba ado ace sql alias ignored for calculated column message box VBA vba for next loop excel vba freeze panes without select vba array length 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 vba date to unix timestamp excel vba folder exist vba folderexists 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 vba sheets add after last excel vba force recalculation vba sheets add rename How do I put double quotes in a string in xl vba excel vba list all files in folder and subfolders excel vba bold some text in cell excel vba double quotes in string literal vba quotes in string literal vba query access database vba quotes in string How do I put double quotes in a string in vba 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 vba string to binary excel vba for next loop skip 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 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 vba function return array excel vba add module programmatically excel vba what happens to range objects if user deletes cells vba create folder if not exist excel vba class get set property vba low byte from INTEGER 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 vba create directory vba class static 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 vba windows clipboard vba bitmask vba make integer from bytes

Browse Other Code Languages

CodeProZone