C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: 配列の使い方がわかりません


(過去ログ 174 を表示中)

[トピック内 4 記事 (1 - 4 表示)]  << 0 >>

■99906 / inTopicNo.1)  配列の使い方がわかりません
  
□投稿者/ 白音 (8回)-(2022/06/17(Fri) 10:19:38)

分類:[Microsoft Office 全般] 

2022/06/17(Fri) 10:20:15 編集(投稿者)

エクセル2013でマクロを使っています。

変数名 dat で
Variant/Variant(1to2,1to3) の以下の配列が
あるとします。

[1] = [a1] [b1] [c1]
[2] = [a2] [b2] [c2]

以下のような使い方ができないのですが
どうすればよいのでしょうか?

for i = 1 to 2
chk(dat(i))
next

public function chk(vdat as variant)
msgbox vdat(1)
msgbox vdat(2)
msgbox vdat(3)
end function

それとも、できるかどうかわかりませんが
以下のようにするのでしょうか?

for i = 1 to 2
chk(dat, i)
next

public function chk(vdat as variant, inum as long)
msgbox vdat(inum, 1)
msgbox vdat(inum, 2)
msgbox vdat(inum, 3)
end function


引用返信 編集キー/
■99907 / inTopicNo.2)  Re[1]: 配列の使い方がわかりません
□投稿者/ 魔界の仮面弁士 (3406回)-(2022/06/17(Fri) 11:51:56)
No99906 (白音 さん) に返信
> 変数名 dat で
> Variant/Variant(1to2,1to3) の以下の配列が
> あるとします。

セルの中身は、"A1" などの文字列ですか?
Dim dat(1 To 2, 1 To 3) As Variant
dat(1, 1) = "A1": dat(1, 2) = "B1": dat(1, 3) = "C1"
dat(2, 1) = "A2": dat(2, 2) = "B2": dat(2, 3) = "C2"


それとも、[A1] などのセルそのものですか?
Set dat(1, 1) = Sheet1.Range("A1")
Set dat(2, 1) = Sheet1.Range("A2")


あるいは、セルの値が入っている状態ですか?
dat(1, 1) = Sheet1.Range("A1").Value
dat(1, 2) = Sheet1.Range("B1").Value



> 以下のような使い方ができないのですが
> どうすればよいのでしょうか?
「二次元配列」の代わりに「配列の配列」を使うことはできます。

Option Base 1
Sub Test()
  Dim dat(1 To 2) As Variant
  dat(1) = Array("A1", "B1", "C1")
  dat(2) = Array("A2", "B2", "C2")

  Dim i As Long
  For i = 1 To 2
    Example dat(i)
  Next
End Sub

Public Sub Example(vdat As Variant)
  MsgBox vdat(1)
  MsgBox vdat(2)
  MsgBox vdat(3)
End Sub
引用返信 編集キー/
■99908 / inTopicNo.3)  Re[1]: 配列の使い方がわかりません
□投稿者/ 魔界の仮面弁士 (3407回)-(2022/06/17(Fri) 11:54:43)
No99906 (白音 さん) に返信
> それとも、できるかどうかわかりませんが
> 以下のようにするのでしょうか?

はい。それでも良いですね。(試されていないのですか?)

Option Base 0
Sub Test()
  Dim dat(1 To 2, 1 To 3) As Variant
  dat(1, 1) = "A1": dat(1, 2) = "B1": dat(1, 3) = "C1"
  dat(2, 1) = "A2": dat(2, 2) = "B2": dat(2, 3) = "C2"

  Dim i As Long
  For i = 1 To 2
    Example dat, i
  Next
End Sub

Public Sub Example(ByVal vdat As Variant, ByVal inum As Long)
  MsgBox vdat(inum, 1)
  MsgBox vdat(inum, 2)
  MsgBox vdat(inum, 3)
End Sub
引用返信 編集キー/
■99933 / inTopicNo.4)  Re[2]: 配列の使い方がわかりません
□投稿者/ 白音 (9回)-(2022/06/23(Thu) 09:33:34)
No99908 (魔界の仮面弁士 さん) に返信

ありがとうございました。
配列の配列をつかってなんか動作するようになりました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -