• ベストアンサー

[マクロ]配列を区切り文字で変数に格納する方法

タイトルの通りなのですが、 例えば、 A1~B10にランダムな数字が入っています。 (1)A1~B10を配列Cに格納します。 (2)配列C(1,10)を変数test1に格納します。  ※その時に各配列を/で区切る (3)配列C(2,20)を変数test2に格納します。  ※その時に各配列を/で区切る (4)test1をセルC1に記入 (5)test2をセルC1に記入 のような感じです。 配列に格納する方法はさすがに分かるのですが、区切り文字を入れて変数に格納する方法が分かりません。。。。 ご教授お願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • marbin
  • ベストアンサー率27% (636/2290)
回答No.4

よく考えたら、一度配列に取り込んで結合、としてもいいですが、 直接変数に区切り文字で挟みながら結合する、でもいいですね。 Dim c As Range Dim r As Range Dim mystr As String Set r = ActiveSheet.Range("A1:B5") mystr = "" For Each c In r If mystr <> "" Then mystr = mystr & "/" mystr = mystr & c.Value Next c MsgBox mystr

その他の回答 (3)

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.3

どういう配列でも使うには、一つづつ一次元配列に格納する、 という方法があります。 Dim c As Range Dim r As Range Dim ary() As Variant Dim arycnt As Long Set r = ActiveSheet.Range("A1:B5") arycnt = -1 For Each c In r arycnt = arycnt + 1 ReDim Preserve ary(0 To arycnt) ary(arycnt) = c.Value Next c MsgBox Join(ary, "/") Erase ary

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.2

>bbb = Range("C1:C3") ↓で試してみてください。 bbb = WorksheetFunction.Transpose(ActiveSheet.Range("C1:C3").Value) ただし、セル範囲が一列複数行の場合でしか使えません。 1行複数列の場合はまた別になります。

tatewaki_K
質問者

お礼

ありがとうございます! できました!!! しかし、、、また分からない事が出てきてしまったので、別に質問致します。 よろしければ回答お願いいたします。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.1

こんなことですか? 変数=Join(配列,"/")

tatewaki_K
質問者

お礼

ありがとうございます。 多分とても初歩的な事なんですよね。。。 で、作ってみたのですが、 「プロシージャーの呼び出し、または引数が不正です。」 と出てしまいました。 理由を調べているのですが、分かりません。 多分、ものすごく初歩的なミスだと思うのですが見て頂けますでしょうか。 ------ Sub Macro1() Dim bbb As Variant Dim aaa As String bbb = Range("C1:C3") aaa = Join(bbb, "/") Range("D1").Value = aaa End Sub ------

関連するQ&A