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

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

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

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

Q&A

解決済

1回答

1009閲覧

連番でなぜか100番目が0になる

ice930

総合スコア99

VBA

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

0グッド

0クリップ

投稿2020/08/12 02:32

エクセルでフォルダの有無を確認するため以下のコードを作成しました。
各データは県のフォルダに入っており、県の中のデータを一つのデータとして有無を確認しています。
表には県名と部位のほかにA列に連番が入るように行数(hyoug)から開始行を引いて記載しています。

序盤は問題なく作動するのですが、100番目のみ「0」と表示されてしまいます。
100番目以降は問題なく101番目から再開されます。
(以下がそのコードです。)

Sub フォルダから表巡視() '追加されたデータを探す Dim path As String Dim kenF As String Dim buiF As String Dim name As String Dim hyoug As Long Dim inthyou As Long '表のデータ数 Dim No As Long path = ThisWorkbook.path & "\" & "写真格納ファイル" & "\" & "部位" & "\" kenF = Dir(path & "*", vbDirectory) hyoug = 11 name = Cells(hyoug, 3) Do While name <> "" hyoug = hyoug + 1 name = Cells(hyoug, 3) Loop inthyou = hyoug - 11 Range("H11:H" & hyoug).Clear '確認欄削除 Dim f As Object With CreateObject("Scripting.FileSystemObject") For Each f In .GetFolder(ThisWorkbook.path & "\" & "写真格納ファイル" & "\" & "部位" & "\").SubFolders Debug.Print f.path kenF = f.name buiF = Dir(f & "\" & "*", vbDirectory) Do While buiF <> "" If buiF = "." Or buiF = ".." Then buiF = Dir() buiF = Dir() End If Dim kenh As String Dim buih As String hyoug = 11 For intA = 1 To inthyou kenh = Cells(hyoug, 2) buih = Cells(hyoug, 3) If kenF = kenh And buiF = buih Then Cells(hyoug, 8) = "〇" Cells(hyoug, 1) = hyoug - 10 Exit For ElseIf intA = inthyou Then '表の項目数分確認したらセルを挿入 Dim tuika As Long tuika = hyoug + 1 inthyou = inthyou + 1 '項目数 Cells(tuika, 2) = kenF Cells(tuika, 3) = buiF Cells(tuika, 8) = "謎" No = hyoug - 11 Cells(tuika, 1) = No Else hyoug = hyoug + 1 End If Next   buiF = Dir Loop Next f Cells(hyoug - 1, 1) = No '最終行記入されるように改造 End With End Sub

コード内はもちろん、複数のサイトを探したり、セルの書式設定で他の部分を探したりしたのですが、原因が一向に分からず質問させていただきました。

また、ステップインだと回数が多すぎて確認が難しいのですが、回数の多い繰り返し構文などに使えるステップインの様な機能が有りましたらご教授いただけると嬉しいです。

初心者のため効率悪い部分も多いかと思いますがよろしくお願いします。

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

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

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

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

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

m.ts10806

2020/08/12 02:34

単に数字だけ繰り返しセルに設定するコードとしてミニマム構成にするとどうなりますか?
ice930

2020/08/12 02:40

「専用の分を作る」ということでしょうか
sazi

2020/08/12 03:21 編集

100番目とかではなくフォルダ構造が関係しているのではないですか?
sazi

2020/08/12 02:58

> 回数の多い繰り返し構文などに使えるステップインの様な機能 if 条件 then stop のようにすると、条件に一致した時に実行が中断します。
ice930

2020/08/12 03:58

再現のプログラム作れるよう、技術を上げていきたいと思います。 アドアイスありがとうございます。 付属の機能に頼っていました!! if 条件 then stop 今後トラブルシューティングなどのに使わせていただきます!
m.ts10806

2020/08/12 05:56

いえ、技術は現状でも可能ですよ。 あくまで問題切り分けのために必要最小限のコードを残すだけの話です。 それに、現在解決済みとされた回答のコメントでは解決したかどうか分かりません。 > https://teratail.com/help/question-tips#questionTips4-2 > 4-2. どのように解決したのかを伝えましょう
guest

回答1

0

ベストアンサー

直接の回答ではありませんが、

また、ステップインだと回数が多すぎて確認が難しい

ブレークポイントやウォッチウィンドウを活用されてはどうでしょうか?

投稿2020/08/12 02:41

meg_

総合スコア10760

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

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

ice930

2020/08/12 03:54

ブレークポイントやウォッチウインドウについて調べてやってみます! ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問