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

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

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

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

Q&A

解決済

5回答

319閲覧

テーブルの行数分繰り返し処理時に特定の行をスキップしたい

jam912sh

総合スコア25

VBA

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

0グッド

0クリップ

投稿2019/02/14 05:49

編集2019/02/14 05:54

前提・実現したいこと

本日からマクロの勉強をはじめました。
プログラム経験も浅く、説明が不足している箇所もあるかと存じますが、
よろしくお願いいたします。

データ数が決まっていないリストのデータすべてを指定したく、
以下コードを作成致しました。

コードは問題なく動作致します。

しかしながら、実データが5行目以降な為、今のままでは、1〜4行目の不要な箇所も
指定されてしまいます。

1〜4行目を除くデータの指定の仕方を教えて頂きたく存じます。

VBAにお詳しい方、ご教示のほどよろしくお願い致します。

該当のソースコード

Sub test() Dim i As Long ' 5行目から処理を行いたい為、iには4を代入 i = 4 Dim strArryHoge() As Variant For i = 1 To Worksheets("シート1").Cells(Rows.Count, "B").End(xlUp).Row ' 配列を再定義する ReDim Preserve strArryHoge(i - 1) ' 配列に値を格納する strArryHoge(i - 1) = Worksheets("シート1").Cells(i, "B").Row Next End Sub

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答5

0

ベストアンサー

いろいろ方法はありそうですが。
strArryHoge(i - 1) = Worksheets("シート1").Cells(i+4, "B").Row

追記 こっちにも必要でしたね
For i = 1 To Worksheets("シート1").Cells(Rows.Count, "B").End(xlUp).Row - 4

投稿2019/02/14 06:07

編集2019/02/14 06:14
torisan

総合スコア678

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

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

jam912sh

2019/02/14 06:20

torisan様、ご教示および追記ありがとうございます!上記のコードで試してみました。「インデックスが有効範囲にありません。」というエラーが表示されました。もう少しコードに不備がないか調査致します。貴重な情報頂きありがとうございます!
jam912sh

2019/02/14 06:30

torisan様、失礼致しました。私のコピペミスでございました。torisan様からご教示いただきました箇所のみで、上手く動作致しました!大変助かりました!お忙しい中、ご教示頂き有難うございました!
guest

0

データの配置や数がいまいちわかりませんが、、、

今の書き方を踏襲するなら、

VBA

1 Dim i As Long 2 ' 5行目から処理を行いたい 3 i = 5 4 Dim strArryHoge() As Variant 5 6 7 For i = i To Worksheets("シート1").Cells(Rows.Count, "B").End(xlUp).Row

iの値をそのまま初期値として指定してやればいいと思います。

でも、エクセル的には、

VBA

1Sub test() 2 Dim v 3 4 v = WorksheetFunction.Transpose(Range(Range("B5"), Cells(Rows.Count, "B").End(xlUp)).Cells) 5End Sub 6

こんな感じでワークシート上の関数を使って、ループを書かなくていけます。

投稿2019/02/14 08:17

mattuwan

総合スコア2136

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

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

0

Dim i As Long
' 5行目から処理を行いたい為、iには4を代入
i = 4

としていますが

For i = 1 To  とここでi が1に書き換わっています。

 ですので i = 4 は不要、 For i = 5 To … として下さい。

投稿2019/02/14 06:02

atsunofu

総合スコア59

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

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

jam912sh

2019/02/14 06:07

atsunofu様、ご教示頂きありがとうございます。「For i = 5 To」を試しましたが、「:0」が返ってくるようで上手くデータの指定が行われませんでした。他になにかコードに不備がないか調査致します!
jam912sh

2019/02/14 06:34

atsunofu様、皆様からご教示頂き、無事問題解決致しました! 貴重なお時間頂きありがとうございました。
guest

0

iが行を表しているので、それで判定することになります

VBA

1Sub test() 2 Dim i As Long 3 Dim strArryHoge() As Variant 4 5 For i = 1 To Worksheets("シート1").Cells(Rows.Count, "B").End(xlUp).Row 6 If i >= 5 Then 7 ' 配列を再定義する 8 ReDim Preserve strArryHoge(i - 1) 9 10 ' 配列に値を格納する 11 strArryHoge(i - 1) = Worksheets("シート1").Cells(i, "B").Row 12 End If 13 Next 14End Sub

複雑になってくるような場合にContinueが使えると良い場面がありますが、vbaではContinueには対応していないので、GoTo文で対応する事になります。
ループを終了し次のループに移る (VBAプログラミング)

投稿2019/02/14 06:00

sazi

総合スコア25173

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

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

jam912sh

2019/02/14 06:33

sazi様、皆様からご教示頂き、無事問題解決致しました!GoTo文につきましても、勉強致します! 貴重なお時間頂きありがとうございました。
guest

0

vba

1Sub test() 2 3 Dim i As Long 4 Dim strArryHoge() As Variant 5 6 For i = 5 To Worksheets("シート1").Cells(Rows.Count, "B").End(xlUp).Row 7 8 ' 配列を再定義する 9 ReDim Preserve strArryHoge(i - 4) 10 11 ' 配列に値を格納する 12 strArryHoge(i - 5) = Worksheets("シート1").Cells(i, "B").Row 13 Next 14 15End Sub

投稿2019/02/14 05:57

編集2019/02/14 06:19
papinianus

総合スコア12705

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

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

jam912sh

2019/02/14 06:03

papinianus様、ご教示頂きありがとうございます。「For i = 5 To」私も質問前に試しましたが、「:0」が返ってくるようでございます。
papinianus

2019/02/14 06:18

":0"が何かよくわかりませんが、redimしてますね。確かにforだけかえてもダメですね。 そのままじゃ合わないですね。 あと、やったことは書きましょう。
jam912sh

2019/02/14 06:32

papinianus様、試した事の記載がなく大変失礼致しました。今後注意致します。papinianus様、皆様からご教示頂き、無事問題解決致しました!貴重なお時間頂きありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問