前提・実現したいこと
カテゴリシートに記載されている各列ごとに掛け合わせを行うプログラムを作成しています。
例:キーワード群1とキーワード群2の掛け合わせの場合
掛け合わせ用シートに該当No.を入力すると
「abcde あいうえお」、「abcde かきくけこ」・・・「fghij さしすせそ」
を表示させる。
発生している問題・エラーメッセージ
・3語掛け合わせの場合は正しく作動するのに、2語掛け合わせの場合はエラーになる 実行時エラー'1004': アプリケーション定義、もしくはオブジェクト定義のエラーです。 該当行: keyword3 = Worksheets("カテゴリ").Cells(4, no3).End(xlDown).Row ・キーワード群の語数が1つの場合、結果が正しく表示されない 例:掛け合わせ作業用シートに1、3、4を入力したとき 以下のように結果が無限に表示されます。 abcde たちつてと まみむめも abcde たちつてと やゆよ abcde たちつてと らりるれろ abcde なにぬねの まみむめも abcde なにぬねの やゆよ abcde なにぬねの らりるれろ abcde はひふへほ まみむめも abcde はひふへほ やゆよ abcde はひふへほ らりるれろ たちつてと まみむめも たちつてと やゆよ たちつてと らりるれろ なにぬねの まみむめも なにぬねの やゆよ なにぬねの らりるれろ はひふへほ まみむめも ・・・
該当のソースコード
Sub KeywordMix() Dim no1 As Integer no1 = Worksheets("掛け合わせ作業用").Cells(4, 2) Dim no2 As Integer no2 = Worksheets("掛け合わせ作業用").Cells(4, 3) Dim no3 As Integer no3 = Worksheets("掛け合わせ作業用").Cells(4, 4) Dim keyword1 As Variant keyword1 = Worksheets("カテゴリ").Cells(4, no1).End(xlDown).Row Dim keyword2 As Variant keyword2 = Worksheets("カテゴリ").Cells(4, no2).End(xlDown).Row Dim keyword3 As Variant keyword3 = Worksheets("カテゴリ").Cells(4, no3).End(xlDown).Row If Worksheets("掛け合わせ作業用").Cells(4, 4) <> "" Then Count = 6 For a = 4 To keyword1 For b = 4 To keyword2 For c = 4 To keyword3 Worksheets("掛け合わせ作業用").Cells(Count, 1).Value = Worksheets("掛け合わせ作業用").Cells(1, no1 + 1).Value & "×" & Worksheets("掛け合わせ作業用").Cells(1, no2 + 1).Value & "×" & Worksheets("掛け合わせ作業用").Cells(1, no3 + 1).Value Worksheets("掛け合わせ作業用").Cells(Count, 2).Value = Worksheets("カテゴリ").Cells(a, no1) & " " & Worksheets("カテゴリ").Cells(b, no2) & " " & Worksheets("カテゴリ").Cells(c, no3) Count = Count + 1 Next c Next b Next a Else Count = 6 For a = 4 To keyword1 For b = 4 To keyword2 Worksheets("掛け合わせ作業用").Cells(Count, 1).Value = Worksheets("掛け合わせ作業用").Cells(1, no1 + 1).Value & "×" & Worksheets("掛け合わせ作業用").Cells(1, no2 + 1).Value Worksheets("掛け合わせ作業用").Cells(Count, 2).Value = Worksheets("カテゴリ").Cells(a, no1) & " " & Worksheets("カテゴリ").Cells(b, no2) Count = Count + 1 Next b Next a End If End Sub
情報が不足していますので、エラー内容とエラー発生行を質問に追記してください。
失礼いたしました。
・3語掛け合わせの場合は正しく作動するのに、2語掛け合わせの場合はエラーになる
⇒実行時エラー'1004':
アプリケーション定義、もしくはオブジェクト定義のエラーです。
該当行:
keyword3 = Worksheets("カテゴリ").Cells(4, no3).End(xlDown).Row
・キーワード群の語数が1つの場合、エラーが発生する
⇒実行はされますが、求めている結果が反映されません。
例:キーワード群1をabcdeのみにし、掛け合わせ作業用シートに1、3、4を入力したとき
以下のように結果が無限に表示されます。
abcde たちつてと まみむめも
abcde たちつてと やゆよ
abcde たちつてと らりるれろ
abcde なにぬねの まみむめも
abcde なにぬねの やゆよ
abcde なにぬねの らりるれろ
abcde はひふへほ まみむめも
abcde はひふへほ やゆよ
abcde はひふへほ らりるれろ
たちつてと まみむめも
たちつてと やゆよ
たちつてと らりるれろ
なにぬねの まみむめも
なにぬねの やゆよ
なにぬねの らりるれろ
はひふへほ まみむめも
・・・
ここに書いても回答者の目に触れにくいため、質問に追記してください。
更新したのでご確認ください。