AccessからExcelにデータを出力する際、セルにタブを入れたいのですが、
strMoji1 = Dept1 & Dept2 & Dept3 '組織
strMoji2 = Position1 & "/" & position2 & "/" position3 '役職など
'組織と役職の間にタブを入れたい
xlSheet.cells(1,1).value = strMoji1 & vbTab & vbTab & strMoji2のような代入ではタブが解除されてしまいます。
何か方法はありますでしょうか?
エクセルのセル内ではタブ文字は空白として表示できない仕様です。
下の画像は、上記のコードを実行したシートです。
セルでは空白はないですが、数式バーは空白(タブ)が表示されてます。
セルをコピーしてテキストエディターに貼り付けるとちゃんとタブは挿入されています。
つまり、タブが削除されるのではなく、タブはあるがセル内では表示されないということです。
セル内で空白を表示したいのなら、スペースを使うしかないです。
ご回答ありがとうございます。
なるほどです。タブはあるがセル上、表示されていないということですね。
このセル内が横に複数列あり、 ひとつひとつのセル内にvbCrLfで改行を入れ、最大10数行程度になります。
そして、これらが数十から数百くらいの行で構成されています。
ですので、列ごとにタブを入れて、文字の左面を合わせたいというのが目的です。
単に複数の半角スペースを入れただけですと、この目的が達成できないのがご相談の真の内容です。
タブを1つもしくは2つ入れた場合のように、スペースを入れられれば解決するのですが、難易度が高く挫けております。
1セル内で表形式のような見栄えで表示したいということでしょうか。
最終目的は、印刷ですか。
VBAでスペースを適切に挿入するようにすれば可能だとは思いますが、
表計算ソフトのエクセルでやるようなことではないように思います。
ご想像の通りでして、仰ることもごもっともです。
そうではありますが、どうしてもやりたいと思っていまして。
フォントはMSゴシックで、ひとまず下記のようにスペースを
埋めました。イミディエイトウインドウ上では全て字面が
合っているのですが、Excel上ではズレが生じています。
debug.print addSpace("AAA") & "BBB"
Cells(i,j).Value = addSpace("AAA") & "BBB"
debug.print Cells(i,j).Value
Function addSpace(strDept As String) As String
addSpace = strDept & Space(40 - LenB(strDept))
End Function
タブをスペースに変換する関数を作成してみました。
上記のコードを標準モジュールにコピーしてください。
A1セルにタブと改行を含むテキストを貼り付けます。その後、下記のコードを実行します。
実行後のシート↓
フォントは等幅フォントにしてください。
半角文字が前提です。全角文字が含まれるとずれます。
第2引数で指定した数字より長い単語があるとずれまず。
全角文字が含まれていても揃うように修正しました。
失礼しました。フォントがBoldになっておりまして、これを修正したら字面が合いました。
ありがとうございます。
素晴らしいです。確認させていただきます。