ここから本文です

VBAについて教えてください。

pag********さん

2017/3/1422:24:44

VBAについて教えてください。

Sub 果物()
If Range("BC5").Value >= 2 Then
Dim r As Range
Set r = Range("BF4")
r.AutoFill Destination:=r.Resize(, Range("BC5").Value)
End If
End Sub

このマクロが繰り返す方法は?
Set r = Range("BF4")⇒BF6⇒BF8 ・・・・
Range("BC5")⇒BC7⇒BC9 ・・・・・・
それぞれRangeが 2つずつ増し繰り返し実行する
繰り返す数はセルBC4の数分です。

教えてください。

補足
If Range("BC7").Value >= 2 Then
Dim r As Range
Set r = Range("BF6")
r.AutoFill Destination:=r.Resize(, Range("BC7").Value)
End If
↓ (2つづつ)
繰り返す数はセルBC4の数分です。

閲覧数:
59
回答数:
3
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

ina********さん

2017/3/1514:58:06

>Dim r As Range

折角オブジェクト変数を使うならもっと積極的に使いませんか。


Sub 果物()
Dim S As Range
Dim R As Range
Dim N As Long
Dim i As Long

N = Range("BC4").Value

Set S = Range("BC5")
Set R = Range("BF4")

For i = 1 To N

If S.Value >= 2 Then
R.AutoFill Destination:=R.Resize(, S.Value)
End If

Set S = S.Offset(2)
Set R = R.Offset(2)

Next
End Sub

質問した人からのコメント

2017/3/15 20:57:46

お見事です。思ったとうりになり、解決しました。折角オブジェクト変数 は

検索してみましたが、理解するのに時間がかかりそうです。

ありがとうございました!!

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

プロフィール画像

カテゴリマスター

lin********さん

2017/3/1512:53:58

If Range("BC7").Value >= 2 Then
For i = 4 to Range("BC4").Value Step 2
With Cells(i, 58)
.AutoFill Destination:=.Resize(, Range("BC7").Value)
End With
Next i

こういうことですか?

nag********さん

2017/3/1423:05:53

以下でどうでしょうか?

Sub 果物()
If Range("BC5").Value >= 2 Then
Dim r As Range
Dim n as Long
ifor n = 1 To Val(Range("BC4").Value)
Set r = Range("BF" & 2 + n * 2)
r.AutoFill Destination:=r.Resize(, Range("BC"& 3 + n * 2).Value)
Next n
End If
End Sub

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる