エクセルでマクロを組もうと思ったけど、何が悪いかわからない!教えてください。

このQ&Aのポイント
  • 私はエクセルでマクロを組もうと思っていますが、素人なのでうまく進めません。
  • 単純にシート入力のB1列のデーターの数を数えて、シート出力のJ1にその数を入れたいです。
  • しかし、「ページ = Worksheets("入力").Range("B1").CurrentRegion.Row.Count」という部分で「オブジェクトが必要です」というエラーが出てしまいます。
回答を見る
  • ベストアンサー

エクセルのマクロで。

エクセルでマクロを組もうと思ったのですが 素人なので進みません。 何が悪いかも判りません。 教えてください。<(_ _)> 単純にシート入力のB1列のデーターの数を数えて シート出力のJ1にその数を入れるだけなんですが・・・。(T_T) Sub Macro1() ' ' Macro1 Macro ' ページ = Worksheets("入力").Range("B1").CurrentRegion.Row.Count Worksheets("出力").Range("J1") = Count End Sub 「ページ = Worksheets("入力").Range("B1").CurrentRegion.Row.Count」 ディバグすると上記の所で「オブジェクトが必要です」とエラーが出ます。 頭も爆発寸前です。(>_<)

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

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

以下のコードを貼り付けて見てください。 '-----------------------この行から------------------- '以下の2行を追加:範囲を選択する。途中に空白行があるとだめかな? Range("B1").Select Range(Selection, Selection.End(xlDown)).Select '以下の行を修正:「Row」ではない。「Rows」です。 ページ = Worksheets("Sheet1").Range("B1").CurrentRegion.Rows.Count '以下の行を修正:「Count」ではない。「ページ」ですよね。 Worksheets("出力").Range("J1") = ページ '-----------------------この行まで-------------------

milkyjam
質問者

お礼

大変助かりました。(*^_^*) >'以下の行を修正:「Row」ではない。「Rows」です。 これを直すとエラーはバッチリ消えました。 >'以下の行を修正:「Count」ではない。「ページ」ですよね。 >Worksheets("出力").Range("J1") = ページ 上記のように修正しました。 数字もセルにちゃんと入りました。 どうもありがとうございました。m(_ _)m

関連するQ&A

  • エクセルのマクロで番号を入力する

    エクセルのマクロに取り組んでいます。 まだ初心者なのでわからないことが多いです。 エクセルのバージョンは2010です。 「入力シート」にボタンを作って、ボタンを押すと「1」と入力できる。 ほかの項目を入力し、保存し、「1」を消して、またボタンを押すと 「2」と入力になる。 このように、ボタンを押すと「1」「2」「3」…と入力できるようにしたいのですが、 どのようにマクロを組んだらよいでしょうか? また、自分で以下のように組んで見たところ、「1048576」となってしまい、「1」になりませんでした。 どこを直せばいいのでしょうか? Sub Macro4() ' ' Macro4 Macro ' 受付番号確認&入力 ' Worksheets("入力").Activate '入力シートをアクティブ MsgBox "次の受付番号→ " & Worksheets("データ").Range("A2").End(xlDown).Row Range("B2") = Worksheets("データ").Range("A2").End(xlDown).Row End Sub ご回答よろしくお願いします。

  • 他のブックでマクロを実行するには?

    以下のマクロを実行すると同一ブック内の他のシートに入力 されますが、これを他のブックのシートに入力されるように するには、具体的にどのようにすればいいのでしょうか? ご教授ください。 ---------------------------------------------------------------- Sub 入力() Dim LastRow As Long With Worksheets("sheet2") LastRow = Worksheets("sheet2").Range("B" & Rows.Count).End(xlUp).Row + 1 .Range("B" & LastRow).Value = Worksheets("sheet1").Range("B1").Value .Range("C" & LastRow).Value = Worksheets("sheet1").Range("B3").Value .Range("D" & LastRow).Value = Worksheets("sheet1").Range("B5").Value .Range("E" & LastRow).Value = Worksheets("sheet1").Range("B7").Value .Range("F" & LastRow).Value = Worksheets("sheet1").Range("B9").Value .Range("G" & LastRow).Value = Worksheets("sheet1").Range("B11").Value End With End Sub

  • 教えてマクロの記述?

    シート1に記述した内容をシート2に一覧形式で入力するマクロを以下の通り作成しました。 シート1に記述した内容を、別のブックのシートに一覧形式で入力していくマクロに変更するには どのようにマクロの記述をすれば宜しいのでしょうか?マクロの初心者にも分るようにご教授 いただければ助かります。よろしくお願いします。 Sub 入力() Dim LastRow As Long With Worksheets("sheet2") LastRow = Worksheets("sheet2").Range("B" & Rows.Count).End(xlUp).Row + 1 .Range("B" & LastRow).Value = Worksheets("sheet1").Range("B1").Value .Range("C" & LastRow).Value = Worksheets("sheet1").Range("B3").Value .Range("D" & LastRow).Value = Worksheets("sheet1").Range("B5").Value .Range("E" & LastRow).Value = Worksheets("sheet1").Range("B7").Value .Range("F" & LastRow).Value = Worksheets("sheet1").Range("B9").Value .Range("G" & LastRow).Value = Worksheets("sheet1").Range("B11").Value End With End Sub

  • excel オートシェープでマクロエラー

    前回、不思議なエラーについて質問した者です。 その後、原因と対処法は分かったのですが、エラーになる理由が分かりません。 現象について極簡単に簡略化して説明します。 ①ワークシートを2つ作ります。sheet1,sheet2 ②sheet1のA列の任意のセルに図形を挿入します。 ③その図形に以下のマクロを登録します。 Sub Macro1() Dim row, j As Integer Dim target As String Worksheets("sheet1").Unprotect ("") Worksheets("sheet2").Unprotect ("") row = ActiveSheet.Shapes(Application.Caller).TopLeftCell.row target = CStr(row) j = Worksheets("sheet1").Range("B" + target).Value j = j + 1 Worksheets("sheet1").Range("B" + target).Value = j Worksheets("sheet2").Protect ("") Worksheets("sheet1").Protect ("") End Sub 図形をクリックした回数をその図形の右に表示するだけのものです。 sheet2はその動作には関係ないのですが、エラーに関係します。 ④ここで4行目と5行目のプロテクト解除を  先にsheet1を解除してから次にsheet2を解除 Worksheets("sheet1").Unprotect ("") Worksheets("sheet2").Unprotect ("")  すると、正常に動作しますが、  先にsheet2を解除してから次にsheet1を解除 Worksheets("sheet2").Unprotect ("") Worksheets("sheet1").Unprotect ("")  にすると、1回目のクリックは動作しますが、2回目のクリックでは「指定した名前のアイテムがみつかりませんでした。」というエラーになります。 この現象について、どなたか理由を教えていただけませんか?

  • エクセル マクロ IF関数について

    Sheet1にグループボックス内で、チェックボタンで項目を選択するとA1に記載されるように作成、マクロで入力ボタン作成しボタンをクリックするとSheet2に記載されるように作りました。しかし、項目が多いためSheet2を見るとABCDEFGなどの列に空白が目立ち使いづらいです。 そこでIF関数を使い何とか出来ないでしょうか? 例)SHEET1 B2に原因のグループボックスにカテゴリー(チェックボックスにて1)入力ミス、2)人、3)機械) B3に対応のグループボックスにカテゴリー(チェックボックスにて1)外注、2)修正、3)報告) と作り、それらがチェックされていたら、A1の列に表示され入力ボタンを押したら、Sheet2のAには原因、Bには対応と記載されるようにしたいです。その時Sheet1のA列に空白があれば、Sheet2の列に表示するようにしたいです。 実際のマクロ記入 Sub 入力() Dim LastRow As Long With Worksheets("Sheet2") LastRow = Worksheets("Sheet2").Range("A" & Rows.Count).End(xlUp).Row + 1 .Range("A" & LastRow).Value = Worksheets("Sheet1").Range("A6").Value .Range("B" & LastRow).Value = Worksheets("Sheet1").Range("A7").Value .Range("C" & LastRow).Value = Worksheets("Sheet1").Range("A8").Value .Range("D" & LastRow).Value = Worksheets("Sheet1").Range("A9").Value .Range("E" & LastRow).Value = Worksheets("Sheet1").Range("A10").Value .Range("F" & LastRow).Value = Worksheets("Sheet1").Range("A12").Value .Range("G" & LastRow).Value = Worksheets("Sheet1").Range("A13").Value .Range("H" & LastRow).Value = Worksheets("Sheet1").Range("A15").Value .Range("I" & LastRow).Value = Worksheets("Sheet1").Range("A16").Value .Range("J" & LastRow).Value = Worksheets("Sheet1").Range("A19").Value End With End Sub お願いします教えてください。

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

    実践で学ぶ Office Excel 2007 VBAというマクロの学習サイトで Sub Macro実践1() 'ブック シート セルアドレスを指定すればブック シートをアクティブにする必要はない             Workbooks("転記.xlsx").Worksheets("転記シート1").Range("A1").Value = _               Workbooks("データ.xlsx").Worksheets("データ1").Range("A1").Value                 End Sub         と入力すると「インデックスが有効範囲にありません」となってしまいます。なにか間違っているのでしょうか?

  • エクセルのフォームのVBAについて

    VBAがまったくわからないのに参考書を見て高度な事に挑戦しています フォームは作れてフォームをクリックやら入力やらして作ったOKボタンを押すと シート2のA1B1C1‥の列に入力文字だけが羅列されます。 しかし次にやろうとするとA2B2C2‥と下に行かず又A1B1C1‥の列の文字が変更になり続きません。何がいけないのでしょうか? Sub 入力() Dim LastRow As Long With Worksheets("sheet2") LastRow = Worksheets("sheet2").Range("A" & Rows.Count).End(xlUp).Row .Range("A" & LastRow).Value = Worksheets("sheet1").Range("A5").Value .Range("B" & LastRow).Value = Worksheets("sheet1").Range("A7").Value .Range("C" & LastRow).Value = Worksheets("sheet1").Range("A8").Value .Range("D" & LastRow).Value = Worksheets("sheet1").Range("A10").Value End With End Sub と参考書とおりいれたのですが‥。教えて下さい。

  • マクロを使って・・・

    シート1に入力したデータをシート2にコピーするいうマクロを作りました。 シート2にコピーはできるのですが 例えば、そのデータを消して再度新しいデータを入れていきたいと思い エクセル左上のシート全体を選択して「Delete」を押すと 会社のエクセル(2003?)は中断モードがどーのこーのとエラー画面が出て マクロが黄色になって、前に進めません。 やり方が決まっているのでしょうか? コピーした行全体を選択して右クリック「削除」とすると エラー画面が出ません。 やり方など決まっているのでしょうか? ↓がんばって作ったマクロです Sub 正方形長方形4_Click() Call macro01 Call macro02 End Sub Sub macro01() Dim ws1 As Worksheet, ws2 As Worksheet Dim x As Long, y As Long Set ws1 = Sheets("Sheet1") Set ws2 = Sheets("Sheet2") x = ws2.Cells(Rows.Count, "b").End(xlUp).Row + 1 y = ws1.Cells(Rows.Count, "b").End(xlUp).Row ws1.Cells(21, "b").Resize(y, 9).Copy ws2.Cells(x, "B").PasteSpecial Paste:=xlPasteValues  ←この行が黄色になります Application.CutCopyMode = False End Sub Sub macro02() Worksheets("Sheet1").PrintOut End Sub

  • ExcelのVBAについての質問です。

    ExcelのVBAについての質問です。 計測機器をつないでsheet1に数値が書き込まれていってる状況です。下記のプログラムを特定の時間内に複数回ループされるように設定したいのですが、そのようなプログラムを加えればいいのでしょうか? Sub Macro1() ' ' Macro1 Macro ' ' Dim iRows As Integer Dim sRows As String ' 最終行の調査: iRows = Worksheets("Sheet1").UsedRange.Rows.Count ' 最終行をシート3にコピー Worksheets("Sheet1").Rows(iRows).Copy Destination:=Worksheets("Sheet3").Range("1:1") ' CH1 の最新データをシート3にコピー Worksheets("Sheet3").Range("B4").Value = Worksheets("Sheet1").Cells(iRows, 3).Value ' CH2 の最新データをシート3にコピー Worksheets("Sheet3").Range("B5").Value = Worksheets("Sheet1").Cells(iRows, 4).Value End Sub

  • Excelのマクロについての質問です。マクロに関しては初心者です。

    Excelのマクロについての質問です。マクロに関しては初心者です。 温度を計測する実験をしています。sheet1に計測している数値が更新されていってどんどん書き込まれている状況です。 Dim fStop As Boolean 'グローバル変数を宣言 Private Sub Command1_Click() ' ' Macro1 Macro ' ' Dim iRows As Integer Dim sRows As String Dim i As Integer Dim tm As Single fStop = Fal For i = 1 To 500 Cells(1, 1) = i tm = Timer() + 5 Do DoEvents Loop While Timer() < tm ' 最終行の調査: iRows = Worksheets("Sheet1").UsedRange.Rows.Count ' 最終行をシート3にコピー Worksheets("Sheet1").Rows(iRows).Copy Destination:=Worksheets("Sheet4").Range("1:1") ' CH1 の最新データをシート3にコピー Worksheets("Sheet3").Range("B9").Value = Worksheets("Sheet1").Cells(iRows, 3).Value ' CH2 の最新データをシート3にコピー Worksheets("Sheet3").Range("C9").Value = Worksheets("Sheet1").Cells(iRows, 4).Value ' CH3 の最新データをシート3にコピー Worksheets("Sheet3").Range("D9").Value = Worksheets("Sheet1").Cells(iRows, 5).Value Next i End Sub Private Sub Command2_Click() fStop = True End Sub 上記のプログラムを作り、sheet1に書き込まれていってる数値の一番新しい数値のみをsheet3の特定のセルの場所に更新されていくように作りました。(コマンドボタン1で計測を開始、コマンドボタン2で計測終了) しかし計測する場所が増えるにつれて下記の部分のプログラムを増やさなければいけません。このプログラムを一まとめにして、指定されたsheet3のセルに書きこまれるようにしたいのですが、どのようなプログラムを加えればいいのでしょうか?Excelのバージョンは2003です。 ' CH1 の最新データをシート3にコピー Worksheets("Sheet3").Range("B9").Value = Worksheets("Sheet1").Cells(iRows, 3).Value ' CH2 の最新データをシート3にコピー Worksheets("Sheet3").Range("C9").Value = Worksheets("Sheet1").Cells(iRows, 4).Value ' CH3 の最新データをシート3にコピー Worksheets("Sheet3").Range("D9").Value = Worksheets("Sheet1").Cells(iRows, 5).Value

専門家に質問してみよう