ここから本文です

エクセルのマクロについて質問です。 繰り返し処理によって決められた回数だけ...

akj********さん

2018/11/1318:45:37

エクセルのマクロについて質問です。

繰り返し処理によって決められた回数だけランダムな数字をA1セルに表示するマクロAがあります。

マクロAによって表示された1回目の数字をコピーしてB1セルに入力し、2回目はその下のB2セルに入力、……100回目はB100セルに入力、という風に実行するマクロはどのように記述したらよいでしょうか。

補足上記のマクロが難しければ代わりに、A1セルをコピーしてそれをB1セルにペースト、B1セルに入力されていればB2セルにペースト、B1セルにもB2セルにも入力されていればB3セルにペーストするマクロをお願いします。

閲覧数:
119
回答数:
2
お礼:
250枚

違反報告

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

プロフィール画像

カテゴリマスター

tra********さん

2018/11/1320:59:29

1~100までの整数の乱数をB列に100行分作成します。
最後の1つは、A1にも値がセットされます。

Sub sample()
For i = 1 To 100
Range("B" & i).Value = WorksheetFunction.RandBetween(1, 100)
If i = 100 Then Range("A1").Value = Range("B" & i).Value
Next i
End Sub

  • tra********さん

    2018/11/1400:28:34

    Sub sample()
    Dim i As Long
    With Cells(Rows.Count, 2).End(xlUp)
    i = .Row
    If .Value <> "" Then
    i = .Row + 1
    End If
    End With
    If i > 100 Then
    MsgBox "セルに空きがありません"
    Else
    Range("B" & i).Value = Rnd
    End If
    End Sub

  • その他の返信(2件)を表示

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

  • 取り消す
  • キャンセル

この質問は投票によってベストアンサーに選ばれました!

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

1〜1件/1件中

lgk********さん

2018/11/1616:36:44

素直にマクロAを直して、A1に書き込んだところを、B列にコピーするようにしたらいいと思います。
Sub マクロA()
の後に
    Dim Row as Integer
を入れます。
多分Cell(1,"A") = かRange("A1") = か [A1] = があるでしょうから、その下に
        Row = Row + 1
        Cells(Row, "B") = [A1]
を追加すればいいです。変数Row が使われていれば、別の変数名にして下さい。

どうしても、マクロAを触りたくないのであれば、
'
Private Sub Worksheet_Change(ByVal Target As Range)
'
    If Target.Address <> "$A$1" Then
        Exit Sub
    End If
'
    Application.EnableEvents = False
'
    If [B1] = "" Then
        [B1] = [A1]
    Else
        [B1048576].End(xlUp).Offset(1) = [A1]
    End If
    Application.EnableEvents = True
End Sub

をマクロを実行するシートに入れれば、
A1が変わった時にB列にコピーしれくれます。

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

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

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

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

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

閉じる

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

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

閉じる