投稿者 るきお  (社会人) 投稿日時 2021/10/18 10:57:05
そのあたりの処理はEnvironmentクラスがうまくやってくれるので、マシン名を取得するにはただ単に次のように記述すつだけです。
Dim PcName As String

PcName = Environment.MachineName


.NET以前はこのような便利なクラスがなかったので、Windows APIを呼び出して、バッファに敷き詰められたNull文字列を自分で除去する必要がありましたね。もう20年くらい前の話です。
https://www.umayadia.com/main/Samples/vbsample010.htm

なお、LSetであまったところに埋められるのはvbNullCharではなく、半角スペースのようです。だから、InStr(NameBuffer, vbNullChar) が 0 を返してプログラムがStrings.Leftでエラーになってしまっているようですね。

なお、今回 LSet を使用されている目的がわかりませんでしたが、16文字に切り詰めるために LSet を使う人はかなり少数派で、SubString が主流です。16文字以下の場合、右側にスペースを埋めるには PadRight を使用します。

参考(今回やりたいこととは違うと思いますが、例として挙げます)
'PcNameが16文字以下の場合、16文字になるように右側にスペースを埋め、16文字以上の場合は、左から16文字までで切り捨てる。 
PcName = PcName.PadRight(16).Substring(0, 16)