器用貧乏の独り言

器用貧乏なおっさんが気の向くままに。

【VBA】10進数を16進数に変換するマクロ

◇前置き

最近、仕事でPLC(※)を使って演算処理をする機会がありました。

※PLC:プログラマブルロジックコントローラ
↑工場などで生産設備を制御するコンピューター的なものですね。

諸々の事情から演算結果をPLC内では16進数で保持して、外部に出力してから10進数に変換することになりました。

↑この辺の事情を語ると長くなるので詳しいことは割愛します。

そこで基数変換をしてくれるマクロを作るに至りました。

※実物は基数変換以外にも色々と処理していますが、今回は基数変換のみを切り取って紹介します。

◇概要

例のごとく、こんな感じのExcelを作りました。

B列に10進数を入力して変換ボタンをクリックするとC列に16進数が出力されます。

ソースコード

ソースコードはこんな感じです。

Sub Number_10_to_16()
 
Dim Num10 As Long
Dim i As Integer
Dim count As Integer
   i = 0
   count = 0
   
   For i = 3 To 14
       Num10 = Range("B" & i)
       If Range("B" & i).Value <> "" Then
           Range("C" & i).Value = WorksheetFunction.Dec2Hex(Num10)
           count = count + 1
       End If
   Next
 
   MsgBox count & "件のデータを10進数⇒16進数に変換しました。"
 
End Sub

◇使い方

実際に動かしてみましょう。
まずは適当な値を入力します。

変換ボタンをクリックすると........

無事変換されました!

◇最後に

基数変換自体、エンジニアやプログラマーといった職業でしか使わない知識だと思います。

基数変換の中だと16進数⇔10進数は比較的よく使う方ではないでしょうか。
ワークシート関数を使うと短いコードで処理が出来るので、複雑なマクロに組み込む際にもオススメです。

この記事も誰かの役に立つとうれしいです。