• 締切済み

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

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

みんなの回答

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.3

回答No.2の追加です。 質問に「セルに2桁の数字を入れています」となっていますのでオーバーフローのエラーにならないと思います。 しかし、E列の処理対象セル範囲に計算結果が文字数0の文字列("")が入っている場合は質問のようなエラーになるでしょう。 条件分岐でエラーを防止するには次のようにします。 If IsNumeric(Cells(hajime,"E")) Then A = Cells(Cells(hajime,"E")) Else: A = 0 End If

dp25lake
質問者

お礼

bunjiさま ご教示有難うございます。データに"00'は有りませんし、わざとsum関数で合計をとってみましたが数値として認識しているようです。ロジックの問題かも知れず再検討します。有難う御座いました。

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.2

A = Cells(hajime,"E") 変数AはByte型で宣言していますので扱える値が限定されます。 Byte型は0から255の整数のみです。(文字は扱えません) Cells(hajime,"E")の値が文字列などの場合は「実行時エラー'13':型が一致しません。」と言うメッセージを出して停止します。 範囲を超えた数値のとき「実行時エラー'6':オーバーフローしました。」と言うメッセージを出して停止するでしょう。(小数部を含む値のときは小数部を除いた数値に丸められオーバーフローの有無が判断されます) 処理対象のセルに合わせて変数Aの型を定義してください。

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.1

>このシートでマクロを作成した時、変数Aを"Dim A As Byte"と定義して、「A = "セル"」の式でマクロの実行が止まり、「実行時エラー'13':型が一致しません。」と出て数値として読み込めないようです 変数Aへセルの値を代入する数式を正しくないのではないでしょうか? A = "セル" ' "セル"の内容を具体的に提示してください。 下記のような式になります。 A = Range("A1") A = Cells(1,1)

dp25lake
質問者

補足

補足いたします。データは相当大きい物ですので。一定の期間である範囲を計算(チェックする)する仕組みのマクロです。 例として、セル(3,"Z")に1100、セル(5,"Z")に1110のデータが入っており、これは行の事で1,100行から1,110行を示しておりこの10行間で処理させるためで定期的に変更しています。このため例えば1,105行目のE列のセルの値を知るために指定行の変化に対応するため新たにhajime=Cells(3,Z)としてhajime=hajime+5として行を確定しA=Cells(hajime,"E")とした行でエラーコード13が出ました。プログラムは勿論For,Nextでループしています。以上です

関連するQ&A

  • エクセル マクロ:部分一致検索

    教えてください。 sheet1のA列に時間データがあります。A列は書式設定でhh:mm:ss.00にしています。 sheet2のA1に時間を表示しており書式設定でhh:mm:ssにしています。 sheet2のA1と部分一致する時間を、sheet1のA列から検索するマクロを作成しています。 (複数ある場合は初めに該当するセルの行を表示) sheet2に下記のコードを入力しており、実行すると「オブジェクト変数またはwithブロック変数がされていません」と表示され困っています。 ご教授のほどよろしくお願い致します。 Sub 検索() Dim Jikan As Date Dim Row1 As Integer Jikan = Sheets("sheet2").Cells(1, 1).Value Row1 = Sheets("sheet1").Range("A:A"). _ Find(What:=Jikan, LookAt:=xlPart).Row MsgBox Row1 End Sub

  • エクセルマクロのことです

    通常使っていたマクロを間違えて消してしまい、その上再構築できなくて困っています。 こんなマクロだったですが。 ブック内に複数のシートが入っています。新しくSheetを追加してA2セル(他のセルの時もあります)をアクティブにします。 Alt+F8→実行でA2セルから下へ、そのブック内の全ての「シート名」が書き出されるというマクロだったのです。 マクロ初心者です、どなたかアドバイスをお願いします。

  • Excel マクロAが動作した時にマクロBをクリア

    Excelのマクロで、 マクロAを動作した時に、マクロBで変数(cnt)に格納していた値を「0」にする方法を教えて下さい。 現在やっていることは、 テンプレートをマクロBを使って1回ないし複数回セルの下に続けてコピーし、データを入力、 マクロAを使って別シートにそのデータを転記して清書すると言う形にしています。 マクロBで実行回数をcntに格納し、次にコピーする位置をcntを使って出しています。 cntの定義は、「Static cnt As Integer」になっています。 この変数cntを、マクロAを実行した時に、0にしたいのですが、 どの様に記述するのか独学なのでうまくいきません。 ご教授下さいますようお願いいたします。

  • エクセルのマクロについて質問です。

    エクセルのマクロについて質問です。 マクロを発動した時に、あるセルに入力してある数値を参照し、その行のX列目に数値を張り付けるものを作成しようとしています。 例えば シート「1」の A1に日付を入力 B1にある数字を入力 シート「2」の A列にA1→1~A31→31の日付が入力されている時 マクロ発動時にシート「1」A1の日付と一致する シート「2」のB列にシート「1」のB1の値を貼り付け ↑たとえばシート「1」のA1が1日でB1が500だった場合 シート「2」の1日(A1)と同じ行でB列(B1に500を 貼り付けるものです。 かなり下手な説明だと自覚しておりますが、解読できる方 どうかご教授ねがいます。

  • EXCELの変数を使用したシート削除マクロについて

    ご教示お願いします。。。 シートAのセルA1に”1111”と入力します。 シート追加マクロを作成し、1111というシートを追加することまではできましたが、 今度はシート削除マクロを作成し、同じく、”1111”のシートを削除しようと思います。 セルA1は都度変わるので、変数を指定し、その変数を使用して削除マクロを作成。 <既に1111シートはあるものと仮定します。> X = Range("A1") '---(1)XにA1セルに入力された数値をセット(1111がセットされる) Application.DisplayAlerts = False '---(2)(削除)確認メッセージをOFF Worksheets(X).Select        '---(3)ワークシートX(X=1111)を選択 ActiveSheet.Delete        '---(4)選択したワークシートを削除 Application.DisplayAlerts = True '---(5)(削除)確認メッセージをONに戻す。 Worksheets("Sheet1").Select    '---(6)ワークシートSheet1を選択して終わり。 上記のマクロを作成し実行すると、(3)で【実行時エラー’9’:インデックスが有効範囲にありません。】 のエラーメッセージがでます。 変数を使用せずに、直接[Worksheets("1111").Select]を明記すると問題なく通ります。 意味が分からず・・・。 変数の指定方法に間違いがあるのでしょうか? お詳しい方がいらっしゃいましたら、ご教示の程よろしくお願いします。。。

  • ワードのマクロからエクセルシートを開きデータを読み込む

    ワードマクロからエクセルシートのデータを読み込みたいのですが、マクロを実行すると「コンパイルエラー:変数が定義されていません。」というエラーが出てしまいます。変数xlUpで引っかかってるようなんですが、どのように定義すればよいですか? コードは以下です。 Dim Workbooks As Object Dim ecell As Integer Workbooks.Open FileName:="namesheet.xls" ecell = Workbooks("namesheet.xls").Worksheets(1).Range("B100").End(xlUp).Row よろしくお願いいたします。

  • エクセルマクロ 「101」 ボタンをおして 「102」となるマクロ?

    エクセルです。 一つのセル(A4)に「101」と書いてあります。それをVlookup関数で他のシートから一致する情報を取り出しています。次に同じセルに「102」とうつと、同じように一致する情報を取り出しています。 そこで、一回、一回、セルに102や103と打つのではなく、ボタンを押すと次の番号にうつるようなマクロを組みたいと思ってます。 ただ、101~130 次は、201~231みたいになってます。 一つのマクロでなくても良いので、よろしくお願いします。 最初は、 Range("A4").select  セルA4を選択 だと思うのですが、この次から分かりません。

  • エクセル マクロ 同じ数値のセルを検索

    教えてください。 sheet2のG1に3と入力しマクロを実行すると、sheet1のA列(通し番号)の3~5の行をコピーして、sheet2のA2にペーストしたいと思ってます。 (sheet1) 番号 数値1 数値2 数値3 数値4   1     5   10   15   20   2    10   15   20   25   3     5   15   20   20   4    10   20   15   25   5     10   15   20   20 ・    ・    ・    ・    ・ ・    ・    ・    ・    ・            ↓ (sheet2) 番号 数値1 数値2 数値3 数値4      3   3    5   15   20    20   4   10   20   15    25   5   10   15   20    20 イメージとしては上の通りです。 まずは、同じsheet1のG1に3を入力して、A列の3(A4)を検索することを目標にしましたが、ここの時点でこけてしまいました。。 Sub 同じ数値のセルを検索() Dim 番号 As String Dim FoundCell As Range Range("A1").Select 番号 = "G1" Set FoundCell = Cells.Find(What:="番号") If FoundCell Is Nothing = False Then FoundCell.Select End If End Sub 笑われると思いますが、これではダメでした。 どうかお助けしていただけないでしょうか。

  • エクセルのマクロ

    エクセルでマクロを使うときにセルに入力した数値などを変えた時に自動でマクロを実行するようにできませんか?

  • 【エクセル】マクロ

    すみません。 エクセルのマクロのプログラム教えてください。 セルA1~A30に 「1」~「5」のいずれかの数字が 入っています。 そのA列の数字をもとにB1~B30のセルの書式を 変えたいと思っています。 例えば、「1」なら赤色、「2」なら青色、「3」なら緑色・・・ となるように考えています。 for文で1~30まで繰り返し、if文とswitch文で実行すると 思うのですが、どのようなプログラムを書けばいいですか? よろしくお願いします。 3種類なら条件式書式が使えるのですが、4種類以上だと使えないので マクロで実行しようと思っています。

専門家に質問してみよう