2017-09-28 5 views
2

このコードはループを使用するように簡単に書き直すことができますが、できません。ここでExcel VBAの次のループの使用方法を理解できません

k1 = (exk - 3 * increment) 
k2 = k1 + 0.01 
k3 = k2 + 0.01 
k4 = k3 + 0.01 
k5 = k4 + 0.01 
k6 = k5 + 0.01 
k7 = k6 + 0.01 
Cells(7, 2).Value = k1 

Cells(8, 2).Value = k2 

Cells(9, 2).Value = k3 

Cells(10, 2).Value = k4 

Cells(11, 2).Value = k5 

Cells(12, 2).Value = k6 

Cells(13, 2).Value = k7 
+1

まずアップ:http://www.excel-easy.com/vba/loop.html –

+0

,2 'の場合 = {ステップ}' 'y = 7〜12の場合:セル(y、2)= k1:k1 = k1 + 0.01:次のy' –

答えて

1

あなたは、次のとおりです。

Sub Rewrite_Code() 
    Dim k() As Double 
    Dim i As Integer 
    Const x = 7 
    ReDim k(x) 

    k1 = (exk - 3 * increment) 
    'Redim Preserve k(i+1) '(this can using when program situation interactively changes) 
    For i = 1 To x 
     k(i + 1) = k(i) + 0.01 
     ActiveSheet.Cells(i + 6, 2).Value = k(i) 
    Next i 
End Sub 'Rewrite 
+0

優れたコード –

+1

毎回赤で表示する必要はありますか? 'Dim arr()As Double:Const x = 7:ReDim arr(x):I = 1〜xに対して ' –

+0

Nathan_Sav、右。ありがとう。私はあなたの通知に従って、コードを改訂しました。 – mgae2m

0

おそらくこれはあなたが何を意味するかですか?

Const FirstRow As Long = 7 
Dim K1 As Double 
Dim i As Long 

K1 = 13     ' your formula is (exc - 3) * increment 
For i = 1 To 7 
    Cells(i + FirstRow - 1, 2).Value = K1 
    K1 = K1 + 0.01 
Next i 
0
Option Explicit 

Public Sub ForNext() 
    Dim ws As Worksheet, r As Long, arr As Variant, exk As Long, increment As Long 

    Set ws = ThisWorkbook.Worksheets("Sheet1")  'set the name of your Worksheet 

    exk = 5 
    increment = 1 

    arr = ws.Range(ws.Cells(7, 2), ws.Cells(13, 2)) 'copy range to array 

    arr(1, 1) = (exk - 3) * increment    'set first array item 

    For r = 2 To 7 
     arr(r, 1) = arr(r - 1, 1) + 0.01   'set the rest of the items 
    Next 

    ws.Range(ws.Cells(7, 2), ws.Cells(13, 2)) = arr 'copy array back to range 
End Sub 

  • アレイ(B7:B13)の範囲をコピーし、アレイ(B7)の最初の項目は1インデックスから始まり - arr(1, 1)
  • が数式の配列の最初の要素を設定します。以前の値に基づいて、各要素をインクリメント、アレイの残りの部分上arr(1, 1) = (exk - 3) * increment
  • 反復
  • 場所裏範囲に配列
+0

ありがとうございます! –

0

一次元アレイサンプルGoogleで

Sub test() 
    Dim exk, increment 
    Dim vResult() 
    Dim i As Integer 
    exk = 5 'setting your value 
    increment = 2 'setting your value 

    ReDim vResult(1 To 7) 'array one dimension 
    vResult(1) = exk - 3 * increment 
    For i = 2 To 7 
     vResult(i) = vResult(i - 1) + 0.01 
    Next i 
    Range("b7").Resize(7) = WorksheetFunction.Transpose(vResult) 

End Sub