EXCEL VBAについて教えてください。

今、配列で10桁の配列に小数点の数字をいれており、それを再度
結合したいのですがどうコーディングするのがいいのでしょうか。
例)
-12.34567 ・・・変数A
桁数  3桁
変数Aには1こづつ記号、数値が入っていて
それを桁数3桁迄に切り直す。
-12.3

なおMIDは使わずに-から一桁ずつ結合していきたいのですが、、


Dim A(10) As String


基本的なことで申し訳ありません。

よろしくお願いいたします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2011/12/15 17:34:55
  • 終了:2011/12/22 17:35:03

回答(2件)

id:taknt No.1

きゃづみぃ回答回数13481ベストアンサー獲得回数11982011/12/15 17:59:16

>なおMIDは使わずに-から一桁ずつ結合していきたいのですが、、

MIDは 分割です。
結合は & です。

A & B

AとBの変数を結合します。

id:sinrabanshyo

すいません間違えました。結合する配列(変数)は決まっていない条件ではどうすればいいのでしょうか?

2011/12/15 19:40:47
id:taknt

>結合する配列(変数)は決まっていない条件ではどうすればいいのでしょうか?

決めてください。
どういう条件で 結合するのか わからなければ 誰もどうしようにもありません。

2011/12/15 19:41:22
id:windofjuly No.2

うぃんど回答回数2625ベストアンサー獲得回数11492011/12/15 23:03:45

サンプルが-12.34567だけなので「MIDを使わずに」の理由がわからないのだけど、
マイナスや小数点が存在する場合としない場合があるのでしょうか?

対応としては、
自作関数にすればいいだけだと思いますので適当につくってみました
自作関数に配列変数を渡して処理させる例として元の配列をいろいろ作って、
やってみてくださいな

Sub main()
   Dim a(10) As String: ' 元の配列
   Dim a2 As String: ' 結合結果を入れる変数
   
   a(0) = "-"
   a(1) = "1"
   a(2) = "2"
   a(3) = "."
   a(4) = "3"
   a(5) = "4"
   a(6) = "5"
   a(7) = "6"
   a(8) = "7"
   a(9) = ""
   
   a2 = MySubstr(a(), 3): ' 数字3文字が残るようにする場合
   MsgBox (a2): ' 結果出力
   a2 = MySubstr(a(), 5): ' 数字5文字が残るようにする場合
   MsgBox (a2): ' 結果出力
End Sub

Function MySubstr(s() As String, n As Long) As String
    Dim m As Long: '要素数
    Dim i As Long: 'ループカウンタ
    Dim c As Long: '数字が何文字出てきたかのカウンタ
    
    m = UBound(s) - 1
    c = 0
    MySubstr = ""
    For i = 0 To m
        MySubstr = MySubstr & s(i)
        If InStr("0123456789", s(i)) > 0 Then
            c = c + 1
            If c = n Then Exit For
        End If
    Next i
End Function
id:sinrabanshyo

ありがとうございます。
とても参考になりました。

2011/12/16 08:31:28

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません