[[20140925084900]] 『宣言を配列にいれる方法』(syk) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『宣言を配列にいれる方法』(syk)

たびたびすみません。
前回も相談させていただいてたんですが、
その分はほぼ動くようになりました。
ですが、publicを使っています。

前回で書いてますが、勉強のため
publicも使うなと言われ、修正しようとしてるんですが、
そこでつまっています。

三つのモジュールにわけなければいけないので、三つに分けているんですが、
それぞれのモジュールで同じ宣言を使います。
同じ変数といったらいいのでしょうか。

なのでその宣言自体をpublicにしてたのですが、
ダメだと言われ、それも配列に入れるかなんかして、引数にしたらいいじゃないかと言われました。

それぞれのモジュールに三つ、四つ引数を使っていて、
多くなったので、残りはpublicにしようと思ったのが始まりです。

とにかくダメと言われてしまえば、ほかの方法を探すしかないし、
書く処理が多くなっても方法はあるのなら、やるしかないと思ったんですが、
宣言(dim)を変数に入れるがわからない。
調べても、調べ方が悪いのか、これだというものが出てきません。

どうか、こうしたらいいんじゃないかとか、助言をください。。
全文のせるのは、長いし必要ない箇所もある気がしたので、
とりあえず、上の部分だけ載せます。
sub取込にある、Dim達を他にある二つのモジュールにも対応するようにしたいです。

Option Explicit

 Sub btn_集計_Click()

    Dim obj取込Array(42, 4) As Variant 'データが42項目あったので、直接入力した
    Dim objDic達Array(4) As Object '4項目なので配列3で十分だが、★1(別モジュール)の理由で配列4にした
    Dim row As Long
    Dim row2 As Long

   '取込を呼び出す
    取込 Worksheets("オーダー実績出力"), obj取込Array, objDic達Array, row

    '集計を呼び出す
    集計 Worksheets("集計結果"), obj取込Array, objDic達Array(), row2

    '出力を呼び出す
    出力 Worksheets("集計結果"), objDic達Array()

End Sub

Sub 取込(ByRef オーダー実績出力 As Worksheet, obj取込Array As Variant, objDic達Array() As Object, row) '取込()を渡す

    Const 契約時間 As Integer = (0)
    Const 社員時間 As Integer = (1)
    Const 協力会社 As Integer = (3)
    Const 社員 As Integer = (4)

    Dim dic契約時間 As Object
    Dim dic社員時間 As Object
    Dim dic協力会社 As Object
    Dim dic社員 As Object

        '既存エラーを出さない為の宣言
    Set dic契約時間 = CreateObject("Scripting.Dictionary")
    Set dic社員時間 = CreateObject("Scripting.Dictionary")
    Set dic協力会社 = CreateObject("Scripting.Dictionary")
    Set dic社員 = CreateObject("Scripting.Dictionary")

        'この宣言はpublicでしている
    Set objDic達Array(4) = CreateObject("Scripting.Dictionary")

    Set objDic達Array(0) = dic契約時間
    Set objDic達Array(1) = dic社員時間
    Set objDic達Array(3) = dic協力会社  '参照No開始行と被ると思ったので、2を飛ばした(★1)
    Set objDic達Array(4) = dic社員
_____________

これだけじゃわからない場合は、全文載せますので、いってください!

あと、コメントは気にしないでください!

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 回答じゃありませんが
 その前に前回の質問に回答があったのだから、それに対するお礼が先じゃないかい?
[[20140918145852]]
(稲葉) 2014/09/25(木) 09:12

稲葉さん

すみません、今あなたに言われるまで気づきませんでした・・。
みなさん、こんなにたくさん書いてくれてたんですね。
感謝してきます!

あと、この問題は解決したというか、
宣言を配列に入れるなんてできないとわかり、ほかの方法を見出したので大丈夫です!
稲葉さん、教えてくださってありがとうございます!
(syk) 2014/09/25(木) 09:47


 いやぁ・・・
 重要なのはichinoseさんがおっしゃっている
 >この問題には、データというシートにあるデータ例とその結果を出力する集計結果というシートの
 >結果例の提示も必要ですよ!!
 >この提示がないと、プログラムの設計ってできませんから・・・・。

 この部分じゃないですか?

 消火の手順を見せられて、
 「なんでもこなせる人(Public)がいないので、専門チーム(集計・取込・出力)に
  分けて手順書を作りたいです」
 と言われても、その「専門チーム」の人材や構成要件が分からないとできないじゃないですか。

 と文句言ってても仕方ないので

 Functionで戻り値を配列にすることで対応できませんか?

 Publicで宣言しているということは、戻り値をどのように取得すればよいかわからないということ
 ですよね?

(稲葉) 2014/09/25(木) 10:12


稲葉さん、
そうですね・・・。
その通りです。
例えで書いてくれていましたね。

functionで戻り値を配列に、ですね。
ちょっと調べてやってみます!
戻り値に関しても、まだあいまいな感じなのです・・・。
すみません。
(syk) 2014/09/25(木) 14:51


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.