2015-12-21 206 views
0

我試圖讓這個程序不僅可以轉換正數,也可以轉換負數。根據此代碼,我可以修改什麼,以便將負數十進制數轉換爲八進制數?另外,如果我還想將未經過舍入的數字轉換爲二進制數字,我該怎麼辦?例如321.123爲二進制。VBA隱藏十進制和十六進制的負數十進制數

Private Sub Conversion_Click() 
Dim chiffreentrer As Integer 
Dim reste As Integer 
Dim reste2 As String 
Dim chiffreocto As String 

chiffreentrer = CInt(InputBox("Entrez un chiffre decimal:", "Conversion Decimal a Octo")) 
Do While chiffreentrer >= 1 
    reste = chiffreentrer Mod 8 
    reste2 = CStr(reste) 
    chiffreentrer = chiffreentrer \ 8 

    chiffreocto = reste & chiffreocto 
Loop 
MsgBox "Le chiffre en octo est de : " & chiffreocto, , "Conversion Decimal a Octo" 
End Sub 

-

Public Function Division(Nombre As Integer) 


     i = 1 
    j = 1 
      Bla = "" 
     Nbinit = Nombre 
     reste = 0 
ActiveSheet.Cells(i, 1) = Nombre 
      ActiveSheet.Cells(i, 2) = "÷2" 
      ActiveSheet.Cells(i, 2).HorizontalAlignment = xlRight 

    Do 


reste = (Nombre - 2 * Int(Nombre/2)) 

Nombre = Int(Nombre/2) 

Bla = reste & Bla 


i = i + 1 
ActiveSheet.Cells(i, 1) = Nombre 
ActiveSheet.Cells(i, 2) = reste 

Loop While (Nombre > 0) 

     MsgBox "Le nombre " & Nbinit & " est équivalent à " & Bla & " en binaire" 

端功能

回答

1

試試這個:

Private Sub Conversion_Click() 
Dim chiffreentrer As Integer 
Dim reste As Integer 
Dim reste2 As String 
Dim chiffreocto As String 

chiffreentrer = CInt(InputBox("Entrez un chiffre decimal:", "Conversion Decimal a Octo")) 
Do While chiffreentrer >= 1 Or chiffreentrer <= -1 
    reste = chiffreentrer Mod 8 
    reste2 = CStr(reste) 
    chiffreentrer = chiffreentrer \ 8 
    If Left(chiffreocto, 1) = "-" Then chiffreocto = Mid(chiffreocto, 2) 
    chiffreocto = reste & chiffreocto 
Loop 
MsgBox "Le chiffre en octo est de : " & chiffreocto, , "Conversion Decimal a Octo" 
End Sub 
+0

謝謝。我還有另外一個問題,這個代碼是否也適用於十進制到二進制轉換?我編輯過的問題也顯示小數到二進制代碼,我該怎麼做,這也會轉換否定? –

+0

這是一個新問題。如果可以,請將其作爲新問題發佈,而不是在得到正確答案後修改此問題。我正在開會,你會得到別人更快的迴應。 –