2017-07-26 7 views
0

と同じに設定する各ワークシートの "R"列で最大値を探します。 MaxValueが6より大きい場合は、0からMaxValueまでの範囲の「C」列の範囲を0.1単位で設定します。 MaxValueが6未満の場合、 "C"列の範囲を0〜6に0.1単位で設定します。最大値を検索し、値を

Dim rng As Range 
    Set rng = ws1.Range("R2-R6000") 
    MaxValue = Application.WorksheetFunction.Max(rng) 
    If MaxValue > 6 Then 
    Lx = MaxValue 
    Else 
    Lx = 6 
    End If 

私はコードを設定しようとしましたが、私はVBAにはとても新しいので、彼の仕事についてどうやって行くのか分かりません。前もって感謝します!

+0

あなたはこれが何を意味するのか明確にしてくださいことができます: '0.1'単位でMaxValueを0のために、「C」の欄に範囲を設定しますか?あなたはコード内でレンジオブジェクトを定義したいですか?または、最大数まで.1の増分でセルを塗りつぶしたいですか?または何? –

+0

セルを最大値の0.1ずつインクリメントしたいと思います。 – Kenzie

答えて

0

ワークシートを明示的に修飾することをお勧めしますが、これは適切な方法です。

Dim rng As Range 
Set rng = ws1.Range("R2:R6000") 

Dim MaxValue as Double 
MaxValue = Application.WorksheetFunction.Max(rng,6) 'this will force 6 or > 

Dim dCounter as Double 

Do 

    dCounter = dCounter + .1 

    'adjust this fill range to whatever you need   
    Range("A" & Rows.Count).End(xlup).Offset(1).Value = dCounter 

Loop Until dCounter = MaxValue 
+0

私はこのコードを試して、0.1から6.1までのセルを塗りつぶしました。そして、 "R"カラムの最大値が6より大きい場合、6.1より前に進んでください。 – Kenzie

+0

これは私にとってはうまくいきます。私は 'Loop Until dCounter = MaxValue'を変更しましたが、最大値で停止します。 Rの値が6より大きく、最大値を生成することを確認してください。それ以外の場合は、6となります。 –

0

このコードは、私の作品のコメントを参照してください:

Dim ws As Worksheet 
Dim rng As Range 
Dim MaxValue As Long 
Dim NumberOfCells As Long 
Dim i As Double 

For Each ws In Worksheets 
    ws.Activate 
    Set rng = ws.Range("R2:R6000") 

    MaxValue = Application.WorksheetFunction.Max(rng) 

    If Not MaxValue > 6 Then 
     MaxValue = 6 
    End If 

    NumberOfCells = MaxValue/0.1 

    Set rng = Nothing 

    i = 0 
    For Each rng In ws.Range("C1:C" & NumberOfCells + 1) 
     rng.Value = i 
     i = i + 0.1 
    Next rng 

Next 
関連する問題