プロが教える店舗&オフィスのセキュリティ対策術

エクセルVBAに関してのご質問です。
一つのbookにア、イの2sheetがあるとします。
sheetアの①A1セルに1500などの数字が入力され、同sheetの②B1セルに25などの数字が入力されます。
sheetイのZ1セルに①の数値(1500など)を参照表示させて、同sheetのZ3、Z5、Z7セル、、、、と一行飛ばしでZ1セルから1ずつ増やして、②の数値分まで表示(1500、1501、1502、、、、1524と②回数分表示)させるにはどのようなコードで表現すればよろしでしょうか。

質問者からの補足コメント

  • 迅速なご回答ありがとうございます。直ぐのご回答に驚きました。
    追加でご質問なのですが、シートイのZ列への表示の際、Z1ではなくZ7など列の途中から表示を開始する場合は、コードをどのように修正すればよろしいでしょうか。
    当方VBAを学び始めてまだ一週間で要領を得ていないのですが、実践的なものを先ずは1つ作って見たいと思っております。

      補足日時:2020/05/25 12:34

A 回答 (4件)

No2、3です



No2のコードでは
 Set rB = Worksheets("イ").Range("Z1")
で最初のセルを設定していますので、これを「Z7」などに設定すればそこから1行おきになります。
(No3の修正をお忘れなきように)
    • good
    • 0
この回答へのお礼

ありがとうございました。解決しました。
まだVBAのビギナーでコード記述に悪戦苦闘しておりますが、上達していきたいと思います。

お礼日時:2020/05/25 23:05

No2です。



投稿してから気が付きましたが、同じ列に縦に1行おきでしたね。
以下訂正しておきます。すみません。

誤 Set rB = rB.Offset(, 2)
正 Set rB = rB.Offset(2)
    • good
    • 0

こんにちは



ご質問の内容は関数で行った方が、自動反映されるので簡単ではないかと思いますが、VBAでとのご質問なので・・・

※ 入力値が数値であることなどのチェックはしていません。

Sub Sample()
Dim rA As Range, rB As Range, n As Long
Set rA = Worksheets("ア").Range("A1:B1")
Set rB = Worksheets("イ").Range("Z1")

For n = 1 To rA(2).Value
 rB.Value = rA(1).Value + n - 1
 Set rB = rB.Offset(, 2)
Next n
End Sub
    • good
    • 0

こんにちは!



一例です。
標準モジュールにしてください。

Sub Sample1()
 Dim i As Long
 Dim wS As Worksheet
  Set wS = Worksheets("ア")
   With Worksheets("イ")
    .Range("Z:Z").ClearContents
     For i = 1 To .Range("B1")
      .Cells(i * 2 - 1, "Z") = wS.Range("A1") - 1 + i
     Next i
   End With
End Sub

※ 細かいエラー処理はしていません。m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございます。とても参考になりました。まだVBAのビギナーでコード記述に悪戦苦闘しておりますが、上達していきたいと思います。

お礼日時:2020/05/25 23:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!