質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

Q&A

解決済

1回答

1084閲覧

VBAの基本操作について

kohan

総合スコア9

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

マクロ

定義された処理手続きに応じて、どのような一連の処理を行うのかを特定させるルールをマクロと呼びます。

0グッド

0クリップ

投稿2020/10/22 10:49

いつもおせわになっております。
さて、以下の件につきご教授いただければと思います。どうぞよろしくお願いいたします。
以下では正常にうごくのですが、

Private

1 2Const maxcolumn = 39 3Dim j As Long 4Dim n As Long**ボールドテキスト** 5Dim t As Long 6Dim lastrow As Long 7 8With Worksheets("計算表") 9 10For j = 2 To maxcolumn 11lastrow = Worksheets("間隔").Cells(Rows.Count, j).End(xlUp).Row 12n = Worksheets("間隔").Cells(lastrow, j).Value 13 14If lastrow > 1 Then 15.Cells(12, j).Value = n 16 17If lastrow >= 3 Then 18.Cells(13, j).Value = n + Worksheets("間隔").Cells(lastrow - 1, j).Value 19 20End If 21End If 22 23Next j 24 25End With 26End Subここに言語を入力 27コード

t = Worksheets("間隔").Cells(lastrow - 1, j).Value
これに問題があるようで、
t = Worksheets("間隔").Cells(lastrow +1, j).Value
やオフセットにしても、マイナスにするとエラーになります。

Private

1特にセル結合しているわけではなく一行目がラベルになっているというだけです。。 2 3Const maxcolumn = 39 4Dim j As Long 5 6Dim n As Long 7 8Dim t As Long 9 10Dim lastrow As Long 11 12 13With Worksheets("計算表") 14 15 16For j = 2 To maxcolumn 17 18 lastrow = Worksheets("間隔").Cells(Rows.Count, j).End(xlUp).Row 19 20 n = Worksheets("間隔").Cells(lastrow, j).Value 21 t = Worksheets("間隔").Cells(lastrow - 1, j).Value 22 23 24 If lastrow >= 3 Then 25 .Cells(12, j).Value = n + t 26 27 End If 28Next j 29 30 31 End Withここに言語を入力 32コード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hatena19

2020/10/22 10:52

どの行でエラーになり、エラーメッセージはなんですか。
m.ts10806

2020/10/22 11:04

タイトルと中身が合致してません。 タイトルは要件を記載してください。
kohan

2020/10/22 11:10

t = Worksheets("間隔").Cells(lastrow - 1, j).Value この行でエラーになり、アプリケーション定義またはオブジェクト定義のエラーですということです、、 よろしくお願いいたします。。
TanakaHiroaki

2020/10/22 11:17

データがない列あれば、そこでエラーが出るのではないでしょうか。
hatena19

2020/10/22 11:19

エラーが出たときにデバッグを押して、lastrow の値を確認してみてください。1になっているということはないですか。
kohan

2020/10/22 11:47

はい、、そのとおりに1とイミディエイトウインドウに出てきました。
kohan

2020/10/22 11:49

m.ts10806 様 大変申し訳ございませんでした。 以後、要件に近いタイトルをつけるように気を付けます。
m.ts10806

2020/10/22 11:50

質問は編集できますので、いつ来るか分からない「以後」に後回しにするのではなく、本質問から対応してください。
kohan

2020/10/22 11:50

TanakaHiroaki ご回答ありがとううございます。そうですね、、それがなんで起こるのか、、
hatena19

2020/10/22 11:50

もう、お気づきだと思いますが、その場合、 Cells(lastrow - 1, j) だと0行目を参照することになりますが、シートに0行目はないので当然エラーになります。
guest

回答1

0

ベストアンサー

vba

1 t = Worksheets("間隔").Cells(lastrow - 1, j).Value

とりあえず上記を下記に変更した場合はどうなりますか。

vba

1 If lastrow > 1 Then t = Worksheets("間隔").Cells(lastrow - 1, j).Value

投稿2020/10/22 11:43

hatena19

総合スコア34075

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kohan

2020/10/22 12:03

ありがとうございます、、、 いかんせん、初心者を接頭語のように使うとうざいとは思いますが、こういうところで本当にデバックしても、、、というより、こういうデバックの仕方さえわからず、、更には、1と出ていも、こういう対処をするということも思いつきませんでした。 If lastrow >= 3 Then .Cells(12, j).Value = n + t で、3行目を選んでいると思い込んでいるので、視点が固定化していました、、 本当に感謝いたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問