質問するログイン新規登録
VBA

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

Q&A

解決済

2回答

841閲覧

Excel VBA - AutoFill を使って値が0になったら止める方法

SnowBallEffect

総合スコア28

VBA

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

0グッド

0クリップ

投稿2020/10/20 01:30

0

0

前提・実現したいこと

Excel VBA のAutofill機能を使ってA列にあるセルを順々に下に行き、値が0になったら、Autofillを止めたいのですが、やり方が分からなく、どなたか助けて頂けないでしょうか?

該当のソースコード

ここまではできたと思います。Loopを使うと思うのですが、どこで使えばいいのか分かりません。 i = 7 to n Range("A6").AutoFill Range("A6:A" & i)

試したこと

Dim Cell as Range
i = 7 to n
Range("A6").AutoFill Range("A6:A" & i)

For Each cell In Range("A6:A" & i)
If cell.Value <> 0 Then

Else End If

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

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

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

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

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

ttyp03

2020/10/20 02:09

AutoFillを使わないといけないのでしょうか? A6は値でしょうか?数式でしょうか?
SnowBallEffect

2020/10/20 02:37

返信ありがとうございます。ChangeLinkも含まれているので、AutoFillの使用は必須になります。A6は値です。
ttyp03

2020/10/20 02:49

不勉強のため逆に教えていただきたいのですが、ChangeLinkというものを使ったことがないので、どうしてAutoFillと関連するのかがわかりません。 A6が単なる値であるなら、AutoFillを使わずにA6の値をループで減算してあげればよいだけの気がしますが。
SnowBallEffect

2020/10/20 03:04

返信ありがとうございます。他のマクロと関連していて、そのマクロでできた新しいワークシートがまた別のワークシートと繋がっているので、まず新しくできたワークシートのリンク元を変えないといけない作業があります。その別のシートを元にAutoFillをしているのでAutoFillが必須になってきます。 可能性としては私は必要以上に複雑な事をしているんだと思います。A6は値なのですが、ループを繰り返すといつか必ずどこかで0という値にたどり着きます。ただ、それは日によって異なります。「0になったら、ループをやめる」でもいいと思うのですが、それもやり方が分からなく、非常に困っています。
SnowBallEffect

2020/10/20 03:06

すいません、A6は値ではなく、Stringです。でも、必ずいつかAutoFillをやっていくと0になります。
hatena19

2020/10/20 03:10

値はA6だけに入っている状態ですか。それともその前のセルにも値はありますか。 具体的にどのような値が入ってますか。 「Stringです。」の意味が数値ではないテキストということならオートフィルで0になることはないと思いますが。
guest

回答2

0

ベストアンサー

AutoFillのルールとか設定とか細かいことがわかっていませんが、単純にあるセルをAutoFillしていくといずれは必ず「0」になるという前提で書くとこんな感じでしょうか。

VBA

1Dim r As Long 2r = 6 3Do While Range("A" & r).Value <> 0 4 Range("A" & r).AutoFill Range("A" & r & ":A" & r + 1) 5 r = r + 1 6Loop

投稿2020/10/20 04:21

ttyp03

総合スコア17002

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

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

SnowBallEffect

2020/10/20 04:48

ttypo03さん、 すごい!これが欲しかったのです!ありがとうございます!Do Whileと "A" & r+1ですね。勉強になります!本当にありがとうございます。
guest

0

こんな感じでしょうか。

VBA

1Range("a6").DataSeries Rowcol:=xlColumns, Step:=-1, Stop:=0

すいません。追記・修正依頼の部分を読んでいませんでした。
数値のケースで単純に考えていました。
文字列の場合は上記では無理だと思います。

投稿2020/10/20 03:10

編集2020/10/20 03:13
radames1000

総合スコア1925

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問