• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マクロ 計算式の値を取得してループさせる)

マクロで計算式の値を取得してループさせる方法

このQ&Aのポイント
  • マクロを使用して、計算式の値を取得し、ループ処理する方法について説明します。
  • 具体的な方法としては、セルに入力された値を取得し、増加させて他のセルに貼り付けるという手順で行います。
  • これにより、指定したセル範囲で値を増やしていくことができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

次のようにすればよいでしょう。 Dim i As Integer For i = 1 To 100 Cells(i * 4 - 3, 1) = i Next

hiro7th
質問者

お礼

一番シンプルに組めたのでBAとさせていただきました。 問題なくできました。ありがとうございました。

その他の回答 (3)

回答No.4

ご質問者さんのコードを元に、そのまま直しますと、以下のようになります。 ただ、このレベルは、頑張れば自力でできるはずですから、もう少し考えてみたほうが良かったです。掲示板では、質問が出れば、誰かが答えてしまうものです。 こういう問題は、ワークシートから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)
回答No.3

こんにちは! 色々なやり方の回答があると思います。 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)
回答No.2

質問のコードでは、何ともコメントしにくい。基本的なところができていないようです。 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

関連するQ&A