0
    Set min=min1=1000, max=max1=position=0   
    For i=2 to 10 do 
    min=**MIN(A(i,j):A(i+5,j));**  
    if position=0 then min1=min, position=1 else  
    For j=2 to 10 do  {max=**MAX(A(i,j):A(i+5,j));**  
    if max<min then next j else position=0, next i 

私はこれが初めてで、VB Excel で上記の次のコードを実行しようとしています (問題は太字で示されています):ありがとう

4

1 に答える 1

7

何をしようとしているのかが明確でないため、すべてのコードを修正することは不可能です。しかし、以下はあなたの出発点になるかもしれません。

変数を宣言し、その型を指定することが常に最善です。

Dim i As Integer
Dim j As Integer
Dim max As Integer
Dim max1 As Integer
Dim min As Integer
Dim min1 As Integer
Dim Position As Integer

アルファベット順に宣言することを好みますが、それは必須ではありません。

必要なもの:

  min = 1000
  min1 = 1000
  max = 0
  max1 = 0
  Position = 0

には次の誤りがありますSet min=min1=1000, max=max1=position=0

  • セットはオブジェクトにのみ使用されます。
  • ステートメントをコンマで区切ることはできません。
  • 一部の言語でmin=min1=1000は意味しますmin1=1000, min=min1が、VBA では次のことを意味します。

    If min1=1000 Then
      min=True
    Else
      min=False
    End if 
    

DoFor 文の最後にno はありません。そう:

    For i = 2 To 10

MIN と MAX はワークシート関数です。then を VBA で使用するには、それらがワークシート関数であると言わなければなりません。VBA ではステートメントの末尾にセミコロンはありません。MIN 関数で j を使用しましたが、まだその値を設定していません。

MIN と MAX のパラメータである値の場所がわかりません。

場所が現在のワークシートにある場合は、次のようなものが必要です。

With ActiveSheet
  min = Application.WorksheetFunction.min(.Range("B16:F16"))
End With

またはおそらく次のように:

With ActiveSheet
  min = Application.WorksheetFunction.min(.Range(.Cells(i,j),.Cells(i+5,j)))
End With

配列に対して MIN 関数と MAX 関数を使用することは可能ですが、配列の一部を選択する方法がわかりません。

これがあなたの始まりになることを願っています。

于 2011-12-22T14:05:08.433 に答える