このコードを実行するたびにエラーが発生します。エラーは1004ランタイムエラーです。私のコードがどこに間違っているのか理解してください。私はcandidate < min
がなかった場合、これが発生するあなたのコードでは0にs2_pos
またはcol
のいずれかを設定することで、問題を再現することができました VBAプロジェクトのランタイムエラー
Option Explicit
Sub Experiment()
Dim m1 As Worksheet
Set m1 = ThisWorkbook.Worksheets("Sheet1")
Dim col As Integer
Dim row As Integer
Dim initial As Double
Dim s1 As Double
Dim s1_pos As Integer
Dim s2 As Double
Dim s2_pos As Integer
Dim min As Double
Dim candidate As Double
Dim temp_swap As Double
Dim r As Integer
col = 2
'For col = 2 To 18 Step 3
For row = 5 To 47 Step 2
initial = m1.Cells(row, col).Value
s1 = m1.Cells(row + 1, col).Value
s1_pos = row + 1
min = Abs(36 - (initial + s1))
r = row + 1
Do While r < 49
s2 = m1.Cells(r, col).Value
candidate = Abs(36 - (initial + s2))
If candidate < min Then
min = candidate
s2_pos = r
End If
r = r + 1
Loop
temp_swap = s1
m1.Cells(s1_pos, col).Value = s2
m1.Cells(s2_pos, col).Value = temp_swap
Next row
End Sub
どのような行エラーがスローされますかを指定してください。あなたが達成するためにしようとしている@ Kurst – Siva
も同様にシートショットをExcelを共有することができれば素晴らしいだろうか?あなたの 'While'ループは理想的ではないようですが、ダイナミックレンジに依存する最小値を探していますか?その場合、 'Min'と' Match'を使用することができます –
@Siva m1.Cells(s2_pos、col).Value = temp_swap、すみませんがスニペットツールが動作しません: '( – Kurst