给你一个例程看看如何:
Function CalCRC(BCRC As Integer, GP As Long, BDF As Long) As Long
  Dim C1&, C2&
  Dim A1%, PreC1&
  Dim LeftValue%, A1Shift%
  If BDF = 0 Then
    CalCRC = 0
    Exit Function
  End If
  A1 = (Len(Hex(BDF)) - 1) * 4  
  C1 = BDF * 2 ^ BCRC           
  LeftValue = Val("&H" & Mid(Hex(BDF), 1, 1))   
  If LeftValue >= 1 Then A1Shift = 1    
  If LeftValue >= 2 Then A1Shift = 2    
  If LeftValue >= 4 Then A1Shift = 3    
  If LeftValue >= 8 Then A1Shift = 4    
  A1 = A1 + (A1Shift - 1)            
  C2 = GP * 2 ^ A1          
  Do
   PreC1 = C1               
   C1 = C1 Xor C2           
   Do
     A1 = A1 - 1  '''
     If C1 > PreC1 Then     
       C1 = PreC1 Xor (GP * 2 ^ A1)
     Else
       Exit Do
     End If
   Loop
   C2 = GP * 2 ^ A1         
  Loop Until C1 <= GP       
  CalCRC = C1
End Function