• 締切済み

エクセルVBA 数値の桁数を揃え、つなぎたい

エクセルVBA、初心者です。 以下の記述でつまづいています。 ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ Dim i As Long 'i は行数を For~Nextで変数にしてます Dim Hbc As Long, Hbc2 As Long 'Hbc は最大11桁の変数 Dim Tsc As Long, Tsc2 As Long 'Tsc は最大5桁の変数 Dim Cd As Long, Cd2 As Long 'Cd は最大4桁の変数 Dim HTC As Long      |      |    長い為、省略      |      | Hbc2 = 100000000000 + Hbc '(1) Tsc2 = 100000 + Tsc Cd2 = 10000 + Cd HTC = Right(Hbc2, 11, 11) & Right(Tsc2, 5, 5) & Right(Cd2, 4, 4) Wks1.Cells(i, 1).Value = HTC ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ Hbc、Tsc、Cd は、データベースから取得した数値が入りますが、 桁数がバラバラな為、頭に0を表示してそれぞれの最大桁数に揃えたいのです。 桁数を揃えた後、3つをつないで HTC とし、i 行目の1列目に表示しようとしています。 下記がつまづいて、解決できないでいるトコロです。 ************問題点************ (1)の行の Hbc2 = 100000000000 + Hbc という記述が Hbc2 = 10000000000# + Hbc に置き換わってしまいます。 *************************** なにぶん、初心者で、単純な間違いかもしれませんが、 どうかご指導、宜しくお願いします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

常識的なFormat関数を使えば(使って結果の文字列&で結合する)どういう不都合がありますか。 コードだけ挙げて回答者に考えさせるのでなく、データ例に即して説明して質問すべきです。

  • hotosys
  • ベストアンサー率67% (97/143)
回答No.3

まず、 >Dim Hbc As Long, Hbc2 As Long 'Hbc は最大11桁の変数 11桁はlongの数値範囲を超えるので、倍精度浮動小数点型か文字列か通貨型でなければ無理。 100000000000#の#はvbeが「これは倍精度浮動小数点型」と判断したのでつけたもの。 >Dim HTC As Long これはどの数値形式でも表現できないので文字列型に。 Cellにも数値形式での代入は無理で、文字列型にするしかない。 なので、 Dim Hbc As Double(またはCurrency) Dim HTC As String ... HTC = Format(Hbc, "100000000000") & Format(Tsc, "100000") & Format(Cd, "10000") Wks1.Cells(i, 1).Value =HTC または Dim Hbc As Double(またはCurrency) ... Wks1.Cells(i, 1).Value = Format(Hbc, "100000000000") & Format(Tsc, "100000") & Format(Cd, "10000") では?

  • howarage
  • ベストアンサー率20% (2/10)
回答No.2

すいません。No1のやり方だと桁落ちしちゃうんですね。 文字列として処理するなら htc = hbc2 & Format(tsc, "00000") & Format(cd2, "0000") ではいかがでしょうか?

  • howarage
  • ベストアンサー率20% (2/10)
回答No.1

HTC = Hbc2*10^9 + Tsc*10^4 + Cd2

関連するQ&A