String.Format メソッド
こちらをご覧ください。String.Format メソッドの使い方が間違っています。
String.Formatメソッドの第一引数はStringとなります。
なのでtempdt.Rows(i)("概算額")
が自動で文字列に変換され"1000"
となります。
なので、String.Format("1000","#,0")
と解釈され、"1000"がそのまま出力される形になります。
このような型の自動変換によって問題が隠れてしまうのが嫌なのであればOption Strict On
を使うことをお勧めします。
ソースの一番上にOption Strict On
と宣言すれば今回のコードは
エラー BC30518 これらの引数で呼び出せるアクセス可能な 'Format' がないため、オーバーロードの解決に失敗しました:
'Public Shared Overloads Function Format(format As String, arg0 As Object) As String': Option Strict On では 'Integer' から 'String' への暗黙的な変換は許可されていません。
'Public Shared Overloads Function Format(format As String, ParamArray args As Object()) As String': Option Strict On では 'Integer' から 'String' への暗黙的な変換は許可されていません。
'Public Shared Overloads Function Format(format As String, ParamArray args As Object()) As String': 引数を ParamArray パラメーターに一致させることはできません。
'Public Shared Overloads Function Format(provider As IFormatProvider, format As String, ParamArray args As Object()) As String': 型 'Integer' の値を 'IFormatProvider' に変換できません。
とエラーになります。
>int型の情報を.ToString()にて文字列化しておりますがこの時、カンマ区切りにしたいのですができません
ToStringにもフォーマット指定することが可能です。
Int32.ToString メソッドをご覧ください。