2017-03-01 71 views
-1

現在、単一のワークブックに簡単なデータ入力データベースシステムを作成しようとしています。 2枚のシートがあり、1枚は 'newEntry'、もう1枚は 'Data'です。Excelマクロ - '_Worksheet'オブジェクトの 'Range'メソッドが失敗しました

マクロが割り当てられているコマンドボタンがあります。 ModulesのModule1のコードは次のとおりです。

コードをテストすると、上記のエラーが発生します。私は他のさまざまなソリューションを見て、私のコードを調整しようとしましたが、何も動作しません。ここで何が問題かを助言してください。コマンドボタンは[newEntry]内にあり、コピーする値を持つセルも同様です。

EDIT:次の行Data.Range( "" & firstBlank)へのエラーポインタポイント.Valueの= firstBlank - "2"

問題であるかもしれないもの教えてください! 2 ' -

+1

を持たなければならないかを確認してくださいを追加は、 '= firstBlankでなければなりません。また、DoubleではなくLongとして暗くする必要があります。 –

+1

C2は、自分の列ラベル(Customer)を含むセルです。コードを下に見て、その列の最初の空のセルを見つけて(つまり、次のセルとしてそれを指し示す)、そこに自分の値を配置するようにします。 – DG85

+0

@chrisneilsen私はそれをやってみました。同じエラーが返されます。 – DG85

答えて

1

あなたは列の最後の行をヒットした場合、列Cが行の下にのみ、空のセル2

lastrowIndex = Data.Range("C2").End(xlDown).Row 
If lastrowIndex = Data.Rows.Count Then lastrowIndex = 2 '<--| if you hit the last row in the column then set lastrowIndex to "header" row index 
firstBlank = lastrowIndex + 1 
+0

ありがとう!コードは魔法のように機能しました!私の元のコードがなぜチャートから外れてそのような奇妙な行番号を示したのかは分かりません。もう一度多くの感謝! – DG85

+1

あなたは大歓迎です。あなたのコード_は、C2だけの下に空のセルを持つ結果、chart_から離れてしまい、 '.End(xlDown).Row 'はその行インデックスを返す列の一番下のセルにヒットし、' lastrowIndex + 1'がそれを超えます。 'Data.Range(" C2 ")。End(xlDown)'の動作はC2を選択してからCTRL + ArrowDownを押した場合と同じです ' – user3598756

関連する問題