私は10進形式のパラメータ(符号付きと符号なし)のリストを取り込み、そこから16進文字列を生成することができる必要があるExcelシートを作成しています。しかし問題は、文字列内のパラメータはリトルエンディアンである必要があり、文字列自体はビッグエンディアンであることです。私はこれを行うにはVBAを使用していますが、私はそれにはかなり新しいですし、困難に走っています。私は文字列に追加する前に各パラメータのendianessを交換する必要があると思います。私はこのサイトとウェブを見て、imの推測が単純な問題でなければならないものに対する単純な解決策を見つけていません。誰かが何か提案があれば、それは非常に高く評価されるだろう。vbaのパラメータのendianessをスワップ
列を生成するためのこれまでの私のコードを以下に示す:
サブGenerate_String()ここ
Dim funcset As String
Dim y As String
x = 0
z = 0
funcset = ""
'while variant column is not empty
Do While ((Trim(Cells(2, 4 + z).Value) <> "") And (Trim(Cells(2, 4 + z).Value) <> "0"))
Do
'check if last cell in the column
If Trim(Cells(4 + x, 1).Value) = "VALUE" Then
'convert cell contents to hex
y = Hex(Cells(3 + x, 4 + z).Value)
'add the converted value to the string
funcset = funcset + "0x" + y
x = x + 1
Else
'convert cell contents to hex
y = Hex(Cells(3 + x, 4 + z).Value)
'add the converted value to the string
funcset = funcset + "0x" + y + " "
x = x + 1
End If
' continue until end of column is reached
Loop While Trim(Cells(3 + x, 1).Value) <> "VALUE"
'write the string to corresponding cell
Cells(3 + x, 4 + z).Value = funcset
funcset = ""
x = 0
z = z + 1
Loop
End Subの
は、いくつかのサンプルデータは、次のとおり データが生成された文字列を有していますしかし、エンディアンスワップは行われていません。
あなたのコードはそのままコンパイルされません(if not if)...サンプルデータ(ソース+ターゲット出力)を表示できますか? – assylias
あなたのコードに従うことができません。しかしながら。 'y = Hex(Cells(3 + x、4 + z).Value)'に続いて、 'End If'があります。これは間違いだと思う。 'funcset = funcset +" 0x "+ y"から、あなたは連結のために '+'を使う言語に慣れていると推論します。 '+'を '&'に置き換えます。私はassilliasに同意します。例のデータがなければ、誰もあなたがしようとしていることを理解できません。 –
[ビッグエンディアンをリトルエンディアンに変換したり、その逆をVBAで変換したりする可能性があります](http://stackoverflow.com/questions/2666874/converting-big-endian-into-little-end-and-vice-versa) -in-vba) –