- ベストアンサー
マクロで計算式の値を取得してループさせる方法
- マクロを使用して、計算式の値を取得し、ループ処理する方法について説明します。
- 具体的な方法としては、セルに入力された値を取得し、増加させて他のセルに貼り付けるという手順で行います。
- これにより、指定したセル範囲で値を増やしていくことができます。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
次のようにすればよいでしょう。 Dim i As Integer For i = 1 To 100 Cells(i * 4 - 3, 1) = i Next
その他の回答 (3)
- WindFaller
- ベストアンサー率57% (465/803)
ご質問者さんのコードを元に、そのまま直しますと、以下のようになります。 ただ、このレベルは、頑張れば自力でできるはずですから、もう少し考えてみたほうが良かったです。掲示板では、質問が出れば、誰かが答えてしまうものです。 こういう問題は、ワークシートからVBAに移行する人には、とても良い内容だと思います。 私自身も、やった経験があります。それと、記録マクロのスタイルはいち早く卒業してください。 '//このコード自体は少し変なところは Range("A1").Value + iではなく、i + 1 で良いです Dim i As Long '* Range("A1").Value = 1 '** For i = 1 To 100 Cells(4 * i + 1, 1).Value = Range("A1").Value + i Next i *ちなみに、16 bitのInteger型は内部で32 bit変換されながらコードが実行されますので、Long型にしたほうが、変換ロスが少ない分だけ、スピードが速くなると言われています。 **Valueプロパティをつけるかどうかの問題は、同アプリのVBA内部では、基本的に変わりはないのですが、他のプログラムから呼び出す時に、つけないと、エラーを起こした経験がありますので、つけたほうがよいと思います。こういうものは、基本的には、プロパティは省略しないほうがよいです。 なお、皆さん似たような方法が出ているので、変わったものを出します。 ワークシートで関数が出来れば、このようにも作ることができます。しかし、こういうコードばかり書いていると、VBAは上達しません。 '// Sub Sample_PasteF() 'Range("A1").Select 'A1方式には不要 With Range("A1:A401") .FormulaLocal = "=IF(MOD(ROW(C1)-1,4)=0,INT((ROW(C1)-1)/4)+1,"""")" .Value = .Value End With End Sub
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 色々なやり方の回答があると思います。 Sub Sample1() Dim i As Long Do Until i = 100 i = i + 1 Cells((i - 1) * 4 + 1, 1) = i Loop End Sub といった具合でもよろしいかと・・・m(_ _)m
- okormazd
- ベストアンサー率50% (1224/2412)
質問のコードでは、何ともコメントしにくい。基本的なところができていないようです。 A5に100回も1か2を書き込むとか、selectionの位置が特定されていないので何をpasteするかわからないとか・・・。 次のようにでもするか。 Dim i As Integer Cells(1, 1) = 1 For i = 5 To 500 Step 4 Cells(i, 1) = Cells(i - 4, 1) + 1 Next
お礼
一番シンプルに組めたのでBAとさせていただきました。 問題なくできました。ありがとうございました。