ACCESSのレポートで詳細のフォーマット時イベントにVBAを記述して
印刷プレビューで、テーブルに基づいて地図のようなものを描画したいと思っています。
テーブル等の情報は以下のような感じです。
「テーブル名」:T_東京
「フィールド」ID:区:人数
1:荒川区:15
2:杉並区:10
3:江東区:2
4:世田谷区:22
5:新宿区:4
6:太田区:2
7:隅田区:28
8:渋谷区:9
9:品川区:13
「レポート名」:R_描画テスト
1.区の人数に合わせて配列に色を格納する。
2.格納した配列を描画する関数に渡して描画する。
上記の手順で進めたいのですが、配列の値が関数に渡りません。
(ちなみにrgbを3分割して、2次元配列にしてみましたが、値は渡りません。位置を表す値(Single型)は変数で渡すことはできます)
配列の値を関数に渡すにはどんな方法がありますか?
そもそもFunctionなどの使い方が間違っているのかもしれませんが・・・
vba
1Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) 2 3 '配列に色のデータを格納する 4 5 Dim i As Integer 6 Dim rs As Recordset 7 Dim acolor() As Long 8 9 i = 0 10 11 Set rs = db.OpenRecordset("T_東京", dbOpenTable) 12 13 rs.MoveFirst 14 15 Do Until rs.EOF 16 17 ReDim acolor(i) 18 19 '区の人数に合わせて配列に色を格納する 20 Select Case rs![人数] 21 Case 1 To 5 22 acolor(i) = rgb(255, 0, 0) 23 Case 6 To 10 24 acolor(i) = rgb(255, 51, 0) 25 Case 11 To 15 26 acolor(i) = rgb(255, 102, 0) 27 Case 16 To 20 28 acolor(i) = rgb(255, 133, 0) 29 Case 21 To 25 30 acolor(i) = rgb(255, 204, 0) 31 Case 26 To 30 32 acolor(i) = rgb(255, 255, 0) 33 Case Else 34 MsgBox "範囲外です。" 35 End Select 36 37 i = i + 1 38 39 rs.MoveNext 40 41 Loop 42 43 '各町の描画 44 45 '****ここで配列の値を関数に渡したいけどできません 46 '****描画自体はできているので配列だけ関数に渡ってないようです 47 Call Unit(acolor(0), 1, 0)'荒川区の描画 48 Call Unit(acolor(1), 2, 0)'杉並区の描画 49 Call Unit(acolor(2), 0, 1)'江東区の描画 50 Call Unit(acolor(3), 1, 1)'世田谷区の描画 51 Call Unit(acolor(4), 0, 2)'新宿区の描画 52 Call Unit(acolor(5), 1, 2)'太田区の描画 53 Call Unit(acolor(6), 1, 2)'隅田区の描画 54 Call Unit(acolor(7), 1, 2)'渋谷区の描画 55 Call Unit(acolor(8), 1, 2)'品川区の描画 56 57 '****直接値を入れれば、正常に描画されます。 58 Call Unit(rgb(255, 51, 0), 1, 0) 59 60End Sub 61 62'四角形の描画(中塗り) 63Function Unit(IngColor As Long, x As Single, y As Single) As Report 64 65 'メッセージボックスで確認してみると値は渡ってないみたいです。 66 MsgBox IngColor 67 68 Dim rpt As Report 'レポートオブジェクト 69 Dim top As Single 70 Dim left As Single 71 Dim right As Single 72 Dim bottom As Single 73 74 top = 5 + x * 5 75 left = 5 + y * 5 76 right = 5 + top 77 bottom = 5 + left 78 79 Set rpt = Reports![R_描画テスト] 80 81 'スケールの基準をmmに設定 82 rpt.ScaleMode = 6 83 84 rpt.Line (top, left)-(right, bottom), IngColor, BF 85 86End Function 87
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。