
過去の質問で色々と助言を受け、以下のプログラムを作成しました。エラーはでないのですが
最後のMsgBoxで何も出てきません。
詳しい方教えていただけないでしょうか。
'1号機の品名を重複分もすべて格納する
Dim No1_M_number(100) As Variant
'1号機の品名で重複分を除いた配列
Dim M_number() As Variant
※色々ループ文で処理をしてNo1_M_number(0)~No1_M_number(67)
まで品名が格納されている。
'関数に配列を渡し、重複分除去
M_number = deleteDuplicateItem(No1_M_number())
Dim s As String
s = ""
s = Join(M_number, vbCrLf)
MsgBox s ←ポップアップに何も表示されない
Function deleteDuplicateItem(ary() As Variant) As Variant()
'#####################################################################
'配列から重複している要素を削除する
'Dictionaryを使用するので、Microsoft Scripting Runtimeの参照設定が必要
'---------------------------------------------------------------------
'引数 :ary 重複を削除したい配列
'#####################################################################
Dim Dic As Dictionary
Set Dic = New Dictionary
Dim i As Long
For i = 0 To UBound(ary)
If Dic.Exists(ary(i)) = False Then
Dic.Add ary(i), ary(i)
End If
Next i
deleteDuplicateItem = Dic.Keys()
Set Dic = Nothing
End Function
No.2
- 回答日時:
とりいそぎ。
要件だけ。>For文途中で
>MsgBox m_Counter & "番目の品番は" & No1_M_number(m_Counter) & "です。
>のようにすると、以下のポップアップが1番目から順にでます。
>>「No1_M_number()」変数に配列として格納されているか
確かに、こうは書きましたが、それは、それは、正しく格納されていたら、当然、そのようにでます。
M_number = deleteDuplicateItem(No1_M_number()) 'ユーザー定義関数
の後の出力を、ブレークポイントで、ローカルウィンドウの変数の中身を見てください、と書いたつもりだったのですが。
申し訳ありません。ブレークポイントの使い方を調べたのですが、いまいちわからず、ツールバーの表示からローカルウィンドウをクリックしても何も起こらなかったため、変数に配列が格納されているのか確認できませんでした。他に確認方法はないでしょうか。
No.1
- 回答日時:
以下で示すように、
コードの中の---ここの時点で、「No1_M_number()」変数に配列として格納されているか
ということです。デバッグ-ブレークポイントを設けて、ローカルウィンドウで、
変数の中身を確認します。問題は、配列を入れる部分が分からないことです。
Sub Test2()
Dim No1_M_number(100) As Variant
'-------------------------------'私が試した方法
For i = 1 To 100
No1_M_number(i - 1) = Cells(i, 1).Value
Next
'---------------------------------
'1号機の品名で重複分を除いた配列
Dim M_number() As Variant
'関数に配列を渡し、重複分除去
'--------------<---ここの時点で、「No1_M_number()」変数に配列として格納されているか
M_number = deleteDuplicateItem(No1_M_number())
Dim s As String
s = ""
s = Join(M_number, vbCrLf)
MsgBox s
End Sub

途中の式は文が多いためここに入らないですが、For文途中で
MsgBox m_Counter & "番目の品番は" & No1_M_number(m_Counter) & "です。
のようにすると、以下のポップアップが1番目から順にでます。
6番目の品番は559135です。
7番目の品番は559135です。
~
30番目の品番は2628です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IF関数でEmpty値を設定する方法。
-
パソコンキーボードで時分秒を...
-
ジャグ配列とは
-
動的配列が存在(要素が有る)か...
-
VBでbyte配列型のインスタンス...
-
Excel VBAで配列の途中から(X)M...
-
配列の要素数を超えた参照のコ...
-
EXCEL VBA で、0から?1から?
-
<forEach> 内で供給された "ite...
-
JTextAreaのサイズについて
-
eclipseに記述したjavaファイル...
-
excel vba 時間計算と条件分岐...
-
ループ処理の際、最後だけ","を...
-
javascriptで文字列のsjis利用...
-
VBAでEUC-JPのHTMLソースを取得...
-
配列をセッションに割り当てた後で
-
『args[]』とは?
-
C言語の変数(LSB)の合わせ込...
-
Java-Swing TextAreaにスクロー...
-
byte配列→float型の値を読みlon...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
動的配列が存在(要素が有る)か...
-
IF関数でEmpty値を設定する方法。
-
VBAで配列の計算
-
VB.net 引数で配列変数を渡す際...
-
C言語 重複しない4ケタの乱数...
-
EXCEL VBA で、0から?1から?
-
パソコンキーボードで時分秒を...
-
C#の質問
-
変数を動的に作るには?
-
配列の要素数を超えた参照のコ...
-
VBで作った乱数を一度も重複さ...
-
Excel VBAで配列の途中から(X)M...
-
Visual C++ でコントロールを...
-
VBでbyte配列型のインスタンス...
-
For文と配列
-
複数のテキストボックスに同じ...
-
五目並べのプログラムを配列と...
-
格闘ゲームのコマンド判定について
-
フォームコントロールのチェック
-
遅延バインディングを使用でき...
おすすめ情報