• ベストアンサー

Excelマクロエラー

Excelのマクロエラーの件でアドバイスを お願い致します 添付画像のセル「C2」が見た目には空白ですが 何かが入ってる様子で C2をDeleteすると4行目の様に表示されます 目的は C2に数字が入っている時は マクロで計算出来るのですが 空白だと思われる時は「実行時エラー 型が一致しません」となり Range("c2") = "??" とデバックで見れます 此のデータはホームページからコピーで取込んだもので C2をDeleteするとエラーが出ませんが 数字が入っている時は計算出来るので 空白(実際は空白でない)の時にエラーが出ない方法のアドバイスを お願い致します 

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

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

ANo.1です。 どう試されたのか解りませんが、私が想定していたのは以下のようなコードです。 If IsNumeric(Rnage("C2")) Then   ここに演算処理 End If 数値でなければ抜けるなら If Not IsNumeric(Rnage("C2")) Then Exit Sub

tenda
質問者

お礼

度々のアドバイスを有難うございました ANo.1 でご指摘頂いたとうり >> どこかのサイトからコピーして貼り付けたという事なので、何か制御コードのようなものが入っているのでしょう。 Copyしたセルが全部文字列になってるのですかね 初めての経験で戸惑いましたが おかげさまで成功しました  本当に有難うございました

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

その他の回答 (2)

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

「Rnage」ってなんだよ(^^;>自分 失礼しました、Range に読み替えてください。

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

どこかのサイトからコピーして貼り付けたという事なので、何か制御コードのようなものが入っているのでしょう。 何が入っているのか、また今後も何が入るかわかりませんので、計算前に IsNumeric(Range("C2")) で、C2セルに数値が入っているのを確認してから演算すればよいと思います。

tenda
質問者

お礼

早速 有難うございました 試してみて うまく出来ないので C2セルに数値が入ってなければ抜けるプログラムを教えて戴けないでしょうか お願い致します

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

関連するQ&A

  • マクロのエラーの原因がわかりません。

    マクロ初心者です。 下記のような簡単なマクロを書きましたが、「型が一致しません」のエラーが出てしまいます。 原因と修正方法をご教授お願いいたします。 For Each c In Range("a1:du82") If c = 1 Then  ←この構文でエラーとなります。 c.ClearContents End If Next c End Sub

  • 【エクセルのマクロ】テキストボックスが空白でもエラーが出ないようにしたい

    エクセルを使って、ユーザーフォームのテキストボックスに入力した小数点を含む数字をコピー、もし入力されていなければセルの中を消すマクロを書いていて、次のようなプログラムをテキストボックスとおなじユーザーフォームにあるボタンに取り付けました。 n3 = (n_3.Text) If n3 = Empty Then Range("j23").ClearContents Else Range("j23").Value = n_3 End If しかし、この方法だとコピーした数字が文字列として保存されてしまい、 計算に不向きなので、数字データとしてコピーするためにいちばん上の行に Dim n3 As Single と入れたところ、テキストボックスが空白の場合”型が一致しません”と表示されてエラーが出てしまいます。 調べたところ、Emptyという言葉はSingleのデータ型には使えないことまではわかったのですが、代わりにどのような言葉を使えばよいのかがわかりませんでした。 どなたかEmptyの代わりとなるような言葉か、プログラムを教えていただけないでしょうか?

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

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

  • エクセル イベントマクロ

    マクロ初心者です。よろしくお願いします。 セル範囲(A1:F20)に何も入力されていなければ塗りつぶしされ、 何か(文字、数字などなんでも)入力されていれば、塗りつぶしがなくなる。 というマクロをあえて、条件付き書式を使わずに行いたいとやってみました。(以下) Private Sub Worksheet_Change(ByVal Target As Range) Dim a As Range For Each a In Range("A1:F20") If a.SpecialCells(xlCellTypeVisible) Then a.Interior.ColorIndex = xlNone Else a.Interior.ColorIndex = 7 End If Next a End Sub ところが、半角数字(0以外)では動作するのですが 文字を入力するとエラーとなり「型が一致しません」と表示されます。 どう直したらよいのでしょうか? 最近マクロをやってみようと始めたので、基本的なことがわかっていないのかも。 どなたか、具体的なご指導お願いします。

  • エクセルのマクロについてお願いいたします。

    エクセルのマクロについてお願いいたします。 E10~M10の500行全てのセルに数式が入っております。 そこでマクロにてコピーのボタンを設置しようと思ってます。 Range("E10:M10" & Range("M" & Rows.Count).End(xlUp).Row).Copy 画像のような数字の結果がある部分だけコピーをしたいです。 23行目からは数式が入ってますが結果は””空白になっております。 どうぞよろしくお願いいたします。

  • エクセルマクロ:範囲の選択

    マクロで範囲を指定したいのですが、 dataと名づけたシートA1に例えば8という値、A2に20という値があります。 この数字は他のセルから参照する計算式になっていて再計算をするたびに変わります。 この時、C8:E20の範囲を指定したいのですが、やみくもに Dim c As Integer c = 3 'C列 Range(Cells(Sheets("data").Range("A1").Value, c), Cells(Sheets("data").Range("A2").Value, c + 2)).Select Selection.Copy などと書いてみたのですが、うまくいきません。 どのように記述すればよいか、教えてください、宜しくお願いいたします。

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

    エクセルのマクロについて エクセル2007を使用しています。もしよかったら教えてください。 現在Sheet1のA1:F500の範囲内で1~31範囲の数字がランダムに入力されています。 この数字群の入ったセルをルール化しているセル背景色塗りを自動で処理したいためマクロを作成しております。 その仕様として、もうひとつシート(Sheet2)を作成して(※シート名は”配色表”にしています)、B3:H7範囲に1~31までの数字が入っており、それぞれ数字に背景配色しています。このシート(Sheet2)内の数字とSheet1内と数字が一致したら配色表のセルそのものの書式も運んでくれるルール設計になっています。 (※Sheet1の上記記載している範囲に直接入力及びコピーをして数字がSheet2内と一致したら、色が変わる仕組みになっています。) そのマクロ(※Sheet1内に作成しています)が下記なのですが、拝見頂いて仕様がすぐお分かりになると思います。 Private Sub Worksheet_Change(ByVal Target As Range) Dim v As Variant, c As Range, s As Range Dim rng As Range Set rng = Intersect(Target, Range("A1:F500")) If rng Is Nothing Then Exit Sub Application.ScreenUpdating = False For Each c In rng.Cells For Each s In Worksheets("配色表").Range("B3:H7") v = c.Value If Not IsNumeric(v) Or v < 1 Or v > 31 Then Exit For '色を一旦戻す c.Interior.ColorIndex = xlColorIndexNone c.Font.ColorIndex = xlColorIndexAutomatic If s.Value = v Then c.Interior.ColorIndex = s.Interior.ColorIndex c.Font.ColorIndex = s.Font.ColorIndex Exit For End If Next s Next c Application.ScreenUpdating = True Set rng = Nothing End Sub ここで今回の質問の本題なのですが、このマクロを少し仕様変更して、現在のSheet2の配色表を、A配色表・B配色表・C配色表...というようにJ配色表まで合計10シートまで増やして(※A~Jは全部別々の色に設定する)、更にSheet1に一つH1の場所のセルにA~J迄の英字を入力するためのセルを設けて、例えばそのセルにCを入力すればC配色表を見に行くという条件付きのマクロにしたいと思っております。 これが簡単そうでなかなかうまく行かず困っています。 上記のマクロを使ってどういう風に変更したらベストであるかご伝授頂ければ幸いです。 どうぞよろしくお願い申し上げます。

  • エクセルVBA記述誤りの解決お願い

    A1~A20のセルに入力データが一切無い場合に、入力を促すメッセージを表示させるマクロを作りましたが,「実行時エラー13  型が一致しません」のエラー表示が出ます。 デバックすると下記マクロの「If Range("A1:A20").Value = "" Then」の部分でストップしていました。 いろいろとやってみましたが、うまくゆきません。 If Range("A1:A20").Value = "" Then MsgBox ("参加マークーを入力ください") Exit Sub End If 記述上の誤りがあるようですので、ご教示いただけましたら幸いです。

  • excelマクロのLeft関数でエラー。原因は?

    下記マクロのLeftで「実行時エラー13 型が一致しません。」とエラー。原因を教えてください。 Private Sub OK_Click() MsgBox ("月末日までと七曜日のカレンダーを作成します。" & vbCrLf & "カレンダーを確認後、ステップ2をクリックしてください。") Unload Me ’カレンダー作成 With ActiveSheet Dim myY As Long, myM As Long, myD As Byte Dim 年月日 As Date Dim 年月翌日 As Date Dim 翌日 As Date Dim i As Variant ' 表題セルから年月日取得 y = .Range("D1").MergeArea ’年 C1セルからK1セルに2011年(平成23年)と入力済み [C30] = y        ’セルC30には2011年(平成23年)と入力されている(参考)。 [C31] = Left(Range("C30"), 4) ’セルC31には2001でOK(参考)。 myY = Left(y, 4)    ’myYに2011を取り出したいが、ここでエラー13発生します。 上のプログラムでなぜLeftでエラーが出るのでしょうか?助けてください。 excel 2007 Pro. Ver.2002 SP3です。

  • エクセルマクロでの計算について(2007)

    エクセルマクロ初心者です。 試行錯誤しながら作成しています。 セルB1には直接計算式を入れており(=(480+(A1)*10)/480*I1) その結果次第(70以下)でセルC1に計算結果(=(75-B1)*.48)をいれて 70より大きければセルC1に"-"を入れたいのですが上手く計算してくれません。 この処理を約65個のセルにしようと思っています。(セルの列はバラバラです) どうすればよいかご教示ください。 ちなみに現在作成している文は Private Sub 計算_Click() Worksheets("sheet2").Select If Range("B1").Value <= 70 Then Range("C1").Formula = "=(75 - (B1)) * 0.48" Else: Range("C1").Value = "-" End If End Sub よろしくお願いいたします。

専門家に質問してみよう