• ベストアンサー

行を挿入するマクロ(その2)

http://oshiete1.goo.ne.jp/qa2463805.htmlにて質問させていただき、一度はできたのですが、 別シートで再度行ったところ「実行時エラー'13' 型が一致しません」 というコメントが出て、デバックすると「For n = 1 To x」のところが黄色くなります。 これは何が原因なのでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.3

前の回答者とは違う者ですが、マクロを見させていただきました。 B列に数値以外の文字、あるいは空白が入っている行があるか、それとも空行が表の最後に入っている可能性がありますね。 最後に空行が入ってるのならそれを削れば動作するかもしれませんが、削除しなくても動くようにするには、 For n = 1 To x の前に If IsNumeric(x) Then を、 Next n の後に End If を挿入してみると動作するかもしれません。

shabushabu
質問者

お礼

おっしゃる通りIFを入れたところ無事にできました。 困っていたところの早々の回答で本当に助かりました。 本当にありがとうございました。

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

その他の回答 (2)

  • driverII
  • ベストアンサー率27% (248/913)
回答No.2

x に数字以外のデータが入っているからです。 xが""の場合などに、ループを実行しないなどのようにすれば良いでしょう。

shabushabu
質問者

お礼

回答ありがとうございます。 XにはLOOKUPで持ってきている数字のみでした。 #3さんの回答で何とか解決することができました。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

B列に数値以外のものがはいってませんか?

shabushabu
質問者

お礼

前回に引き続き本当にありがとうございます。 数字以外は入っていませんでしたが、数字をLOOKUPで持ってきていたのが いけなかったのでしょうか? ひとまず#3さんのやり方で解決いたしました。 merlionXXさん、本当にありがとうございました。

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

関連するQ&A

  • Formsで簡略化

    Visual Basic 6.0 前回Controlsで、コードを簡略する事が出来ました。 http://oshiete1.goo.ne.jp/qa5102884.html 同様にFormsでも簡略出来ないのでしょうか? For i = 1 To 5 Controls("Command" & i).Caption = "ABC" Next i ----------------------------------------- For i = 1 To 5 Forms("Form" & i).Caption = "ABC" Next i 上記Formsの使い方をすると、実行時エラー'13': 型が一致しません。 すみませんが、ご教授願います。

  • マクロについて・・・

    下記で文字の「強制全角変換」について質問した者です。 http://oshiete1.goo.ne.jp/qa2737696.html 実際にシートの作成をしていて、範囲も指定して、全角変換できるのですが、 指定範囲外のシートに入力した時にエラーが出るようになりました。 「オブジェクトが必要です(Error424)」 エラー画面が出なくなるためには、どうすれば良いですか?

  • エクセルで別のシートに連番を入力したい

    解決したと思い締め切らせていただいたのですが、 再度問題が出てきたので質問させてください。 http://qanda.rakuten.ne.jp/qa8670339.html ベストアンサーの方法で運用し始めたのですが、コードを入力したシート(シート名:1)にだけ エラーが出ます。 2つのセルを一度にペーストしようとすると、(例えば、C11とC12をC13とC14にコピーペースト) 実行時エラー'13': 型が一致しません。とのエラーが出ます。 解決策があれば教えて頂きたく思いますので、よろしくお願いします。

  • マクロ シート内容の比べについて

    下記のソースで実行したら、 MyStr1(0) = "AAAAAA" & Chr(10) & "BBBBBB" ' の行で "実行時エラー'9'" "インデックスが有効範囲にありません。" というエラーが出ています。 調べても、わからないから、ここで質問をさせて頂きます。 最初に"Old""New""TEMP"3枚のシートが既存しています。 やりたいのは、"Old"シートと"New"シートの内容を検索して、異なる部分を探すことです。 ---------------------------------------------------------------- Sub Macro1() ' M = 3 N = 2 Sheets("Old").Select Sheets("Old").Copy Before:=Sheets(1) Sheets("Old (2)").Select Sheets("Old (2)").Name = "TTT" Dim MyStr1() As String Dim K As Long ReDim MyStr(K) MyStr1(0) = "AAAAAA" & Chr(10) & "BBBBBB" 'エラーになった行 MyStr1(1) = "CCCC" MyStr1(2) = "DDDDD" MyStr1(3) = "FFFFFFFFF" MyStr1(4) = "EEEEEEE" MyStr1(5) = "SSSSSSSSS" MyStr1(6) = "GGGGGGGGG" For K = 0 To 6 X = 1 Y = 1 M = 3 N = N + 1 For Y = 1 To 100 For X = 1 To 300 'セル1の判断ループ If Sheets("Old").Cells(X, Y) = MyStr1(K) Then For M = 3 To 300 X = X + 1 If Sheets("Old").Cells(X, Y) <> Sheets("New").Cells(X, Y) Then Sheets("TTT").Cells(X, Y).Select With Selection.Interior .ColorIndex = 1 .Pattern = xlSolid End With Selection.Font.ColorIndex = 6 End If Next M End If Next X Next Y Next K End Sub ----------------------------------------------------------- 以上、宜しくお願いします。

  • シート保護後のコメント挿入

    エクセルなのですが、保護をかけた後のシートに対し、 コメントを入れられるようにしたいのです。 以前の質問にマクロを使ってやる方法が載っていたのですが、 具体的にどういう手順で作業すればいいのかわかりません。 <過去質問:エクセル シート保護後コメント挿入ができない> http://oshiete1.goo.ne.jp/qa1260481.html また、これ以外でできる方法はありませんか? ご存知の方がいらっしゃいましたら、教えてください。 よろしくお願い致します。 なお、使用ソフト等は「windows XP/Excel2003」です。

  • マクロで全てのシートで条件を満たすシートに行を挿入するにはどうしたらいいですか

    マクロ初心者です。自分でも作ってみたのですが、なかなか思うようにいかず困っています。 book内のシート3つ目から最後のシートで、条件に一致するシートの特定位置に行を挿入するということがしたいのですが。 条件とは、1列目の最後の行に「合計」と記入されていれば、行を4行挿入し、上の書式をコピーするというものです。 下記に記しているマクロは、シートを指定した場合には動くのですが、これにシートをnとして、FOR...Nextを付け加えてシートを順番に参照させようとしても、うまくいきません。 Sub 行挿入sample3() With Sheets("10007") For i = 7 To .Cells(Rows.Count, 1).End(xlUp).Row If .Cells(i + 1, 1) = "" Then Exit For ElseIf .Cells(i + 1, 1) = "合計" Then Range(Cells(i + 1, 1), Cells(i + 4, 1)).Select Selection.EntireRow.Insert Range(Cells(i, 1), Cells(i, 3)).Select Selection.Copy Range(Cells(i + 1, 1), Cells(i + 4, 3)).PasteSpecial xlPasteFormats End If Next i End With End Sub 知識をお持ちの方、教えていただけるととても助かります。よろしくお願いします。

  • マクロ:データの抽出(複数条件)

    エクセルで以下のようなマクロを作成しました。 シート1のG列がシート2のF4と合致する時、シート2のC列にシート1のB列を貼り付けるのですが、条件を増やし 「シート1G列がシート2のF4と一致」かつ「シート1H列がシート2のG5と一致」かつ「シート1I列がシート2のH5と一致」かつ・・・としたいのですが、If Thenをどのように記述したらよろしいでしょうか。(AND関数の機能です) 宜しくお願いいたします。 Sub data01() With Sheets("Sheet1") x = .UsedRange.Cells(.UsedRange.Count).Row For i = 5 To x If .Cells(i, "G").Value = Worksheets("Sheet2").Range("F4").Value Then n = n + 1 Sheets("Sheet2").Cells(n + 5, "C").Value = .Cells(i, "B").Value End If Next End With End Sub

  • 【マクロ】全シートでまとめて実行するには?

    教えてください。マクロは初心者です。 ↑先ほど、http://oshiete1.goo.ne.jp/qa5695407.html で、ある親切な方に以下のマクロを教えて頂きましたが、私がその時にまとめて聞くのを忘れてしまい、改めて教えていただきたく思います。 ------------------------------------------------ Sub test()  Dim R As Long  For R = 1 To Cells(Rows.Count, "B").End(xlUp).Row    If Cells(R, "B").Value = "土" Or CellsR, "B").Value "日" Then      Cells(R, "A").Resize(1, 5).Interior.ColorIndex = 6    End If  Next R End Sub ---------------------------------------------------- 上記のマクロを1シートでなく、全シートでまとめて実行したいのですが(どのシートも同様の内容なので)、どうすればいいのかわかりません。 どの個所にどんなコードを入れればよいのでしょうか? よろしくお願いします。 【XP、2003】

  • VBA、Excelにて複数行をまとめて削除したいのですが

    Dim gyou1 As Range, gyou2 As Range gyou1 = 4 gyou2 = 62 For data = 1 To 1440 Rows("gyou1:gyou2").Select Selection.Delete Shift:=xlUp gyou1 = gyou1 + 1 gyou2 = gyou2 + 1 Next data 複数行をまとめて削除したいのですが、型が一致しないとのエラーで上手く実行できません。 どうすればいいでしょうか?

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

    Excel 2013のシートでセルに2桁の数字を入れていますがセルの書式設定でユーザー定義を"00"として数値が1桁の場合に頭にゼロがつくようにしてあります。このシートでマクロを作成した時、変数Aを"Dim A As Byte"と定義して、「A = "セル"」の式で マクロの実行が止まり、「実行時エラー'13':型が一致しません。」と出て数値として読み込めないようですがどなたか原因と解決方法ご存知の方教えて下さい。

専門家に質問してみよう