質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

2回答

339閲覧

VBA マクロ実行に関して

kitten

総合スコア25

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2019/01/07 02:43

編集2019/01/07 02:52

皆様、あけましておめでとうございます。
昨年は大変お世話になりました。
本年もよろしくお願いいたします。

昨年の12月の質問に引き続く形の質問になります。

下記の添付写真(2枚目は後述のコードと同じものになります。)
の1枚目にあるWorkSheet2つをもとに下記のコードを
実行させたいのですが、なぜか何も動きません。
こちらのサイト
(http://www.mdis.co.jp/products/malsy/faq/tips_id426.pdf)
を参考に再度試みましたが結果は同じでした。

どのようにすれば実行できるのか、何が原因で実行できないのか
の2点を教えて頂きたいです。

イメージ説明
イメージ説明

VBA

1Option Explicit 2 3Public Sub GetProductCodes() 4 5 Dim sht_in As Worksheet, sht_out As Worksheet 6 Dim code_target As String 7 Dim n As Integer, x As Integer, r As Integer 8 9 Set sht_in = Sheets("2(子部品コードでソートし、COUNTIF)") 10 Set sht_out = Sheets("6(調査対象子部品(VBA))") 11 12 n = 2 '出力行カウンタ 13 r = 1 '重複数カウンタ 14 15 '調査対象子部品の数だけループ 16 Do While sht_out.Cells(n, 1) <> "" 17 code_target = sht_out.Cells(n, 1) 18 19 x = 2 '入力行カウンタ 20 21 '構成情報の数だけループ 22 Do While sht_in.Cells(x, 1) <> "" 23 If sht_in.Cells(x, 1) = code_target Then 24 sht_out.Cells(n, r + 1) = sht_in.Cells(x, 2) 25 r = r + 1 26 Else 27 r = 1 28 End If 29 x = x + 1 30 Loop 31 32 r = 1 33 n = n + 1 34 Loop 35 36End Sub 37 38

●追記

1枚目の写真についてですが、2(子部品コードでソートし、COUNTIF)と
6(調査対象子部品(VBA))の2つは添付写真上では異なるBookになっていますが、
実際にマクロを実行する際には同一Book上にあるものです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ronin

2019/01/07 03:43

マクロの実行はどのように行っていますか?またブレークポイントを指定して実行するとどうなりますか?
guest

回答2

0

ベストアンサー

最初のループがDo While sht_out.Cells(n, 1) <> ""となっており、「6(調査対象子部品(VBA))」シートのA列の値が""でない間はループする処理となっています。

変数nは処理前にn = 2で初期化していますので、A2セルから開始することになりますが、添付イメージを見る限り対象シートのA列には値が入力されていません。

従ってこのデータで実行しているのなら初回からループを抜けてそのまま終了してしまうものと思われます。
※実際に処理した時の「6(調査対象子部品(VBA))」シートには値が入っている、というのであればこの限りではありません。

これであれば、デバッグ実行(VBEditor画面のコード上でF8を押して1行ずつ処理を進める)すれば確認できると思います。
ご確認ください。

投稿2019/01/07 08:19

jawa

総合スコア3013

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kitten

2019/01/08 02:40

ご回答ありがとうございます。 ご指摘いただいた最初のループのところの理解不足で 6(調査対象子部品(VBA))のA列に 何も値を入れていなかったという凡ミスでした。 ご回答くださった皆様方ご迷惑をおかけしました。
guest

0

実行させたいのですが、なぜか何も動きません。

一番最後のところに、
msgbox(”完了”)を入れてみてはいかがですか?
以下のようになります。
もし、完了の文字が表示されるのなら、何も動かないのではなくて、期待した通りに動いていないだけです。
完了の文字が表示されないなら、そもそも、マクロが動作していません。
まずは、ここを切り分けてください。

VBA

1 Loop 2 MsgBox ("完了") '追加 3End Sub

投稿2019/01/07 04:03

tatsu99

総合スコア5424

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問