• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル マクロ デバックについて)

エクセルマクロのデバッグについて

このQ&Aのポイント
  • エクセルマクロを実行していると、デバッグの際にエラーが発生します。特に「Cells(i, "b") = Left(Cells(i, "a").Value, inn - 1)」の部分でエラーが発生しています。
  • このエラーの原因は、セルの値が不正なために発生しています。セルの値には「印」という文字が含まれており、それを取り除いて隣のセルに格納しているのですが、取り除く際にエラーが発生しています。
  • 原因を特定するために、デバッグツールを使用してみることをおすすめします。変数「i」や「inn」の値を確認し、変数「inn」の値が正しく取得できているかを確認してください。また、エラーメッセージや行番号なども確認することで、エラーの原因を特定することができるかもしれません。

質問者が選んだベストアンサー

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.1

「デバッグになる」の意味がちょっと判りませんがエラーになるという事でしょうか? で、あればパッと見て気になったのが↓のコード Do While Cells(i, "a") <> " " 本当はA列のセルにが空白が出るまでループさせたいんじゃ無いでしょうか? 現在は半角スペース1個が出るまでループしています。 そのせいでA列が空白でも処理が進み、変数inn=0に。 そしてCells(i, "b") = Left(Cells(i, "a").Value, inn - 1)で、エラーになります。 空白でループを抜けたいなら Do While Cells(i, "a") <> ""

ysmtnk
質問者

お礼

""で解決しました。 自分で考えていたらいつまでもわからなかったと思います。 本当にありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

ところで何のご質問なのでしょうか? 取りあえず、気になった点です。 (1)要件が曖昧と思う  ・印がない場合はどうする  ・姓名に印が有る場合はどうするのか  ・姓名と印の間のスペースの有無 (2)Do While Cells(i, "a") <> " " ⇒ Do While Cells(i, "a") <> "" ではないか? (3)「印」を検索して相対位置からLEFTの文字数としているが、「姓名」と「印」の間のスペースの考慮がされていない

ysmtnk
質問者

お礼

(2)""で解決しました。 わかりにくい質問を解析していただきありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルのマクロについて

    お手数ですが誰か教えてください! BのデーターをAに集計するマクロを作ったのですが 処理速度とっても遅いのです。 高速で処理する方法はありませんでしょうか? 私が作ったマクロ Sub 集計() Dim Z As Integer Dim i As Integer Dim X As Integer For Z = 2 To 2000 For i = 2 To 2000 For X = 3 To 20 If Worksheets("A").cells(Z, 1) = Worksheets("B").cells(i, 1) And       Worksheets("A").cells(1, X) = Worksheets("B").cells(i, 14) Then Worksheets("A").cells(Z, X) = Worksheets("B").cells(i, 16) End If Next X Next i Next Z End Sub       どこかが間違っている気がしますがマクロ初心者のため       先に進めません。       どうかご教授よろしくお願い致します。

  • エクセル:マクロでこんなことはできますか?

    【シート1】に名簿があります。 1 山田太郎 | ○○市○○町 | 電話 ・・・・ 2 山田花子 | ○△市  |・・・ といった一般的なものです。 【シート2】は、データ入力用としています。 A2~A4の3つを結合し、シート1から”山田太郎”を参照(INDIRECT関数使用) A5~A7の3つを結合し、同様に山田花子を参照 B2,B3.B4、C2,C3,C4は必要データを入力しています。 ★やりたいこと 【シート1】の山田太郎(1行すべて)を削除したときに、 【シート2】の2~4行に入っている山田太郎さんに関するシートを自動的に削除したい。 以上です、よろしくお願いします。

  • エクセルのマクロで複数セル指定は?

    以前(7月22日 質問No.936181)の質問でご回答を頂いたマクロなんですが、 Private Sub Worksheet_Change(ByVal Target As Range) Dim MyData As String Dim i As Integer Dim ImaNanji As String Dim SakkiNanji As String Dim ImaNanpun As String Dim SakkiNanpun As String SakkiNanpun = Cells(2, 3).Value ImaNanji = Cells(1, 3).Value ImaNanpun = Mid(ImaNanji, Len(ImaNanji) - 4, 2) If ImaNanpun <> SakkiNanpun Then Application.EnableEvents = False For i = 10 To 2 Step -1 MyData = Cells(i - 1, 2).Value Cells(i, 2).Value = MyData Next i MyData = Cells(1, 1).Value Cells(1, 2).Value = MyData Cells(2, 3).Value = ImaNanpun Application.EnableEvents = True End If End Sub A1のデータをB1からB10に一分おきにつぎつぎに書き込むというものなんですが、ひとつのセルではなく複数のセル(例えばA1からA30の30個のセル)をいっぺんに書き込むようにしたいのですが可能でしょうか? よろしくお願いします。

  • Excel マクロ:変数を複数使う場合

    マクロ初心者です。 For文で、変数を2つ定義し、それぞれが1つずつ増えてくれるような マクロを組みたいのですが、うまくいきません。 例えばA列の並んだ数字を、B列に一個とばしで入力するとして・・・ 例) Dim i As Integer Dim j As Integer For j = 2 To 10 Step 2 For i = 1 To 9 Cells(j, 2).Value = Cells(i, 1).Value Next i, j ではだめですよね。iが1つ増える時に、jも1つ増える、 というようにVBAを組むことが可能なのでしょうか? ど素人な質問ですみませんが、教えてください。

  • エクセルマクロに関する質問

    最近、エクセルマクロを始めてたのですが、下記のような状態で困っています。 プログラムを実行した際に、Cells((I1 + I5), I6)のセルに計算式がはいって欲しいのですが、 現状では計算結果が入るだけになってしまっています。 また、単純に文字列に変換してしまうだけだと、変数が邪魔になって式になってくれません。 誰かお分かりになる方がいましたら、教えてください。  Dim I1 As Integer Dim I2 As Integer Dim I3 As Integer Dim I4 As Integer Dim I5 As Integer Dim I6 As Integer Dim I7 As Integer Dim I8 As Integer Cells((I1 + I5), I6) = Cells((I1 + I5) - 2, I6) + Cells((I1 + I5), I6 - 2) - Cells(I1 + I5, I6 - 1)

  • エクセルマクロで特定の範囲内の検索

    A10からA100までのセルを上から順に調べて、セルにAという文字が入力されているときに、その隣にBという文字を入力するマクロを下記のように作りました。 「セルにAという文字が入力されているとき」という条件に加え、「検索しているセルから上の9個のセル(cells(i-9,1)からcells(i-1,1)まで)にAという文字が入力されていない」という条件を加えたいのです。 Sub 検索() Dim i As Integer For i = 10 To 100 If Cells(i, 1).Value = "A" Then Cells(i, 2).value = "B" End If Next i End Sub つまり If Cells(i, 1).Value = "A" Then  の部分を If Cells(i, 1).Value = "A" かつ Range(cells(i-9,1),cells(i-1,1))にAが入力されていない Then という形にしたいのですが、表現の仕方がわかりません。 ご教示よろしくお願いします。

  • VBAで実行時エラー'13': がでます

    初歩の初歩ですいません。 VBAで Dim A As Integer Dim B As Integer Dim C As Integer Dim gokei As Integer For i = 8 To 70 A = Cells(i, 4).Value B = Cells(i, 5).Value C = Cells(i, 6).Value goukei = A + B + C Cells(i, 7) = goukei Next i としていますが A = Cells(i, 4).Value のところで今使っているシートだと止まってしまいます。 新規でワークシートを使って仮に数字を代入すると普通に動きます。 今使っているシートもセル内には =100 と入力して 100 と表示され セルの書式設定も数値になってるんですがどうしてでしょうか?

  • エクセル2003のマクロが2010で使えない

    PC買い換えで、今まで使えていたマクロに下記のようなメッセージが表示されて 使えなくなりました。他人が作成したマクロでまた、私はVBAに詳しくありません。 !はこのマシンで利用できないため、オブジェクトをこのマシンで読み込めませんでした。 コンパイルエラー 変数が定義されていません。 以下記述の一部です。 Private Sub UserForm_Initialize()                    ←ここが黄色に Dim c As Control, i As Integer, j As Integer With data i = 1 Do Until .Cells(i + 1, 1).Value = "" i = i + 1 list01.AddItem .Cells(i, 2).Value For j = 1 To 6 list01.List(i - 2, j) = .Cells(i, j + 2).Value Next j list01.List(i - 2, 7) = .Cells(i, 1).Value Loop i = 1 Do Until .Cells(i + 1, 29).Value = "" i = i + 1 comb02.AddItem .Cells(i, 29).Value comb02.List(i - 2, 1) = .Cells(i, 30).Value comb02.List(i - 2, 2) = .Cells(i, 31).Value comb02.List(i - 2, 3) = .Cells(i, 32).Value comb02.List(i - 2, 4) = .Cells(i, 33).Value comb02.List(i - 2, 5) = Mid(.Cells(i, 29).Value, Len(.Cells(i, 29).Value) - 4, 2) comb02.List(i - 2, 6) = Right(.Cells(i, 29).Value, 2) Loop i = 1 Do Until .Cells(i + 1, 37).Value = "" i = i + 1 comb01.AddItem .Cells(i, 37).Value Loop cal01.Value = .Cells(2, 23).Value                   ← cal01が青く ymdStart = .Cells(2, 26).Value ymdEnd = .Cells(3, 26).Value Controls("opt0" & .Cells(3, 23)).Value = True chk01.Value = .Cells(4, 23).Value For Each c In Controls If Left(c.Name, 4) = "list" Or Left(c.Name, 4) = "text" Or Left(c.Name, 4) = "comb" Then c.ForeColor = .Cells(13, 25).Value c.BackColor = .Cells(16, 25).Value End If Next c End With With list01 If .ListCount = 0 Then If MsgBox("職員が登録されていません。", 48, ThisWorkbook.Name) = 1 Then End If Else ReDim GroupTable(.ListCount - 1, 1) i = 0 For j = 0 To .ListCount - 1 If .List(i, 0) <> .List(j, 0) Then i = j End If GroupTable(j, 0) = i Next j i = .ListCount - 1 For j = .ListCount - 1 To 0 Step -1 If .List(i, 0) <> .List(j, 0) Then i = j End If GroupTable(j, 1) = i Next j End If End With but07.ControlTipText = ThisWorkbook.Name & "の上書き保存" MsgMode = True Call cal01_Click Call opt04to05_Change End Sub どうしていいかわかりませんので、よろしくお願いします。 Windows7 Professional SP1 64

  • エクセルマクロで教えてください

    マクロ初心者です。アドバイスをお願いします。以下のマクロですとB列の100行目までの塗りつぶしのセルのカウントは出来るのですが、シート上の全てをカウントしたいのです。1TO 100の100の部分をどう変更したら良いのか教えてください。 Sub セルの色数1() Dim I As Integer Dim Count As Integer Count = 0 For I = 1 To 100 If Cells(I, 2).Interior.ColorIndex <> xlNone Then Count = Count + 1 Next I Range("C1").Value = Count End Sub

  • エクセルについて

    エクセルで住所録を作っているのですが、名前とフリガナを同じセルに入力していました。フリガナだけを横のセルに移動することは可能でしょうか      A             B 1山田 太郎 ヤマダ タロウ  2山田 花子 ヤマダ ハナコ    A | B 1山田 太郎 | ヤマダ 太郎 2山田 花子 | ヤマダ ハナコ 宜しくお願いします。

このQ&Aのポイント
  • 筆王Ver.27 のインストールに関して、途中で止まる問題が発生しています。前回同様の問題が再発しており、対応方法を知りたいです。
  • 現在、新しいPCに筆王Ver.27 をインストールしようとしていますが、途中で処理が止まってしまいます。前回同様の問題が再発しているため、対応方法を教えてください。
  • 筆王Ver.27 のインストールで問題が発生しています。前回同様に途中で止まってしまい、解決策がわかりません。どうすればインストールを完了させることができるのでしょうか?
回答を見る

専門家に質問してみよう