![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
Excell-VBAにおいて、大量の定数を二次元配列に代入して行く方法をご教授願います。
下記関数は、JIS並目ねじのM数(引数:B)の知りたい形状値(たとえば「ピッチ」ならば、引数C=1)を出力するものなのですが、40行もの代入文をずらっと並べて書くしか思いつかずに居ります。
昔のN88-BASICなどではREAD~DATA文を用いて、データーを羅列して書いておけば良かったのですが、Excell-VBAにおいては良い方法はありますか?
その他の希望としましては、ワークシートからデーターを読み込む方法では、ワークシートをいじられてはおかしくなってしまいますので、VBAコードだけで完結させたいです。
また、別途データファイルを作成しておいて、Open~命令で、という手法も用いないで作成したいです。
Array関数に、ずらっとデーターを並べるのも避けたいです。
(私は、Access-VBAは多少かじっておりますが、Excell-VBAにはかなりうといです。)
Function NAMIME(B, C)
Dim A(40, 5), D As Single
Dim I As Integer
' ピッチ 引っかかりの高さ 外径 有効径 谷の径
A(1, 1) = 0.25: A(1, 2) = 0.135: A(1, 3) = 1: A(1, 4) = 0.838: A(1, 5) = 0.729
A(2, 1) = 0.25: A(2, 2) = 0.135: A(2, 3) = 1.1: A(2, 4) = 0.938: A(2, 5) = 0.829
A(3, 1) = 0.25: A(3, 2) = 0.135: A(3, 3) = 1.2: A(3, 4) = 1.038: A(3, 5) = 0.929
<中略>
A(38, 1) = 5.5: A(38, 2) = 2.977: A(38, 3) = 60: A(38, 4) = 56.428: A(38, 5) = 54.046
A(39, 1) = 6: A(39, 2) = 3.248: A(39, 3) = 64: A(39, 4) = 60.103: A(39, 5) = 57.505
A(40, 1) = 6: A(40, 2) = 3.248: A(40, 3) = 68: A(40, 4) = 64.103: A(40, 5) = 61.505
D = -1
For I = 1 To 40
If A(I, 3) = B Then
NAMIME = A(I, C): D = 0
End If
Next I
If D Then NAMIME = "範囲外"
End Function
No.2ベストアンサー
- 回答日時:
データをシートに記載して、そのシートを非表示(.Visible = xlVeryHidden)にして仕舞えば、マクロ操作以外の方法で表示させる事はできません。
http://www.officetanaka.net/excel/vba/sheet/shee …
ご回答、ありがとうございます。
Excelシートを非表示にすることが出来るのですね!
Accessではフォームだけを表示させて、テーブルの不正(不注意)書き換えを防いでいましたので、同様な方法が使えるとはありがたいです。
No.1
- 回答日時:
DATA 文がガマンできるなら、それをシミュレートするようなコードを書けば良いと思います。
例えば、
Public A(40, 5) As Single
Private Sub initialize()
Const data_str As String = _
"0.25,0.135,1,0.838,0.729," & _
"0.25,0.135,1.1,0.938,0.829," & _
"0.25,0.135,1.2,1.038,0.929," & _
'<中略>
"5.5,2.977,60,56.428,54.046," & _
"6,3.248,64,60.103,57.505," & _
"6,3.248,68,64.103,61.505"
Dim data
Dim i As Integer, j As Integer, k As Integer
data = Split(data_str, ",")
k = 0
For i = 1 To UBound(A, 1)
For j = 1 To UBound(A, 2)
A(i, j) = CSng(data(k)): k = k + 1
Next
Next
End Sub
とかすればイイと思います。
A( )は、いちいち初期化するのもなんなので、Function MAMIMEから外にだしてブックオープン時などに一度初期化(initializeの呼び出し)します
ご回答、ありがとうございます。
起動時にSubをCallして、事前に配列に読み込ませておく手段ですね。
付加も”と&くらいで済みそうですし、記載した程度の小規模配列にはピッタリの手法かと思います。
ご教授、ありがとうございました。
>DATA 文がガマンできるなら
実は、これ以上の二次元データを扱いたいので、この先も、こんなに苦労して打ち込まなければならないのかなぁ。。。と悩んでいたところなんです。
扱うデータはJISなどの規格物で、そうそう変更があるものではないですから、データ列を一度関数化しておけば、何度もの使い回しに耐え得るので、たくさん作って蓄えておきたいのです。
フリーソフトでもJISの便覧があったりするのですが、パスワードが設定されていたりして、編集が出来なかったりするので、自作にチャレンジしているところなのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 2 2022/06/25 22:42
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) 複数シートの複数列に入力されているデータを重複なしで抽出するVBAを作りたいです。 9 2022/06/17 10:33
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- Visual Basic(VBA) ファイル全てを .xlsm に変更したところ、プログラムが途中で落ちてしまっています 17 2022/12/07 12:03
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 2 2022/05/26 17:19
- Visual Basic(VBA) 列と行の名前(重複あり)が交差するセルに、データを入力したい 3 2022/06/12 11:17
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Access-VBAでExcelファイ...
-
コンボボックスへ降順に表示す...
-
エクセルVBAでフォームの無効化...
-
エクセルVBA 別シートの最終セ...
-
Excelに関数使用を調べる方法
-
オフィス2003VBAのスプレッドシ...
-
エクセル マクロについて、 Inp...
-
Auto_Openマクロ
-
VBAでVlookup機能を使うときに...
-
エクセルVBAでオブジェクトが必...
-
エクセルのVBAの関数について
-
エクセルを共有にすると、シー...
-
vbaアニメーションについて
-
VBA シートをコピーする際に Co...
-
エクセルで特定の文字列が入っ...
-
エクセルで複数のシートのクリ...
-
VBAマクロ実行時エラーの修正に...
-
エクセル マクロ オートフィ...
-
Excelのマクロについて教えてく...
-
VLOOKUPの列番号の最大は?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Access-VBAでExcelファイ...
-
コンボボックスへ降順に表示す...
-
エクセルVBAでオブジェクトが必...
-
マクロのコマンドボタン《Activ...
-
複数シートを一括で保護を掛け...
-
エクセルで品番を入れると、そ...
-
マクロ実行後、画面がちかちか...
-
エクセルのVBAについて教えてく...
-
エクセルマクロ 変数をワーク...
-
VBAでVlookup機能を使うときに...
-
エクセルマクロ(超初心者)
-
エクセルを共有にすると、シー...
-
Excelに関数使用を調べる方法
-
Excell VBA にて配列に定数を代...
-
エクセルVBA 別シートの最終セ...
-
Excelの各シートの一覧シートの...
-
エクセルVBAでフォームの無効化...
-
マクロのイベントトリガー
-
マクロでフォルダ内のExcelを全...
-
エクセル マクロについて、 Inp...
おすすめ情報