Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


3124 / 13644 ツリー ←次へ | 前へ→

【64095】配列に中身が入らない NK 10/1/18(月) 17:18 質問[未読]
【64096】Re:配列に中身が入らない yoshi 10/1/18(月) 18:23 回答[未読]
【64097】Re:配列に中身が入らない UO3 10/1/18(月) 18:39 発言[未読]
【64104】Re:配列に中身が入らない NK 10/1/19(火) 12:59 お礼[未読]

【64095】配列に中身が入らない
質問  NK  - 10/1/18(月) 17:18 -

引用なし
パスワード
   つい数日前からマクロに挑戦している初心者ですが、是非皆様のご協力をいただきたく投稿いたします。

 以下のようにマクロを書いて、エクセルのデータベースの情報を配列に格納していきたかったのですが、二点質問させてください。

[QUESTION1]どうやら、どの配列にも何も入っていないようなのです。何故でしょう?

[QUESTION2]配列に次々と格納していくときに、for next構文で上限を変数におき、配列もlist(4,cnt)のように変数をおきたかったのですが、エラーが出てしまいました。何故でしょう?

 質問をするにあたって、あますことなく情報を書いてあるかどうかもわからないくらい、初心者ですが、どうかご容赦のほどお願いするとともに、是非アドバイスをください。よろしくお願いします。


Sub kensaku()

'[STEP1:データを配列化する]
  Dim ws As Worksheet
  Set ws = Worksheets("MDT")
  Dim cnt As Long
  cnt = ws.Range("A65536").End(xlUp).Row - 7
  
  Dim List(4, 303) As Variant '[QUESTION2]何故303のところにcntが入らないのか?
  Dim m As Long
  
  For m = 0 To cnt
    List(0, cnt) = ws.Range("R7").Offset(cnt).Value '摘要
    List(1, cnt) = ws.Range("A7").Offset(cnt).Value '勘定年月
    List(2, cnt) = ws.Range("C7").Offset(cnt).Value '工事番号
    List(3, cnt) = ws.Range("H7").Offset(cnt).Value '伝票番号
    List(4, cnt) = ws.Range("N7").Offset(cnt).Value '仕訳金額
  Next
  
  Debug.Print List(0, 1) '[QUESTION1] ここで試しにPRINTしてみてもすべて空の模様
  Debug.Print List(1, 1)
  Debug.Print List(2, 1)
  Debug.Print List(3, 1)
  Debug.Print List(4, 1)
  
  
  '[STEP2:キーワードとチェックをする]
  
'  Dim n As Long
  
'  Dim Target As String
'  Target = Worksheets("抽出MASTER").Range("B2").Value
  
'  For n = LBound(List, 2) To UBound(List, 2)
'    If InStr(List(0, n), Target) > 0 Then
'      Debug.Print "勘定年月:" & List(1, n)
'      Debug.Print "工事番号:" & List(2, n)
'      Debug.Print "伝票番号:" & List(3, n)
'      Debug.Print "仕訳金額:" & List(4, n)
'      Debug.Print "摘要:" & List(0, n)
'    End If
 
  
'  Next
  

End Sub

【64096】Re:配列に中身が入らない
回答  yoshi  - 10/1/18(月) 18:23 -

引用なし
パスワード
   >  Debug.Print List(0, 1) '[QUESTION1] ここで試しにPRINTしてみてもすべて空の模様

コードを良く見てください。
そもそも List(0, 1) には何も代入していないので空は当然。

【64097】Re:配列に中身が入らない
発言  UO3  - 10/1/18(月) 18:39 -

引用なし
パスワード
   ▼NK さん:

yoshiさんも指摘しておられますが、NKさんのコードでcntは
上限の、あるいみ【定数】で、変化していく変数はmですね。
For ループの中でList(1,cnt)とやっても、常に同じ場所に
(cnt列に)値が入るだけですね。

やろうとしておられることは、なんとなく想像できるんですが
データの件数をEndで求めておられる割には配列宣言で
(4,303)とハードコーディングしておられるのは、なにか誤解
しておられるように思えます。

いずれにせよ、シート上の実際のデータの配置も記載されれば、
皆さんもアドバイスしやすいのではないでしょうか。

【64104】Re:配列に中身が入らない
お礼  NK  - 10/1/19(火) 12:59 -

引用なし
パスワード
   みなさん>
アドバイスありがとうございます。
なんか、小さいところから大きくしている過程で変数について
混乱してしまったようでした。
くだらない質問に丁寧にコメントありがとうございました。
整理したところ、確かにちゃんと動きました。

3124 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free