2

VBA に、Excel Sheet1 のセル A1 をクリアしようとする次の関数がありますが、内容はクリアされず、出力として False も返されます。

Function test()
    Application.Volatile (False)    
    test = Worksheets("Sheet1").Range("A1:A1").Clear
End Function

また、この時点で Locked プロパティが True にならないようにしてください。False にしても、次の行を印刷すると Locked プロパティは True になります。

助言がありますか?

ありがとう

4

2 に答える 2

4
  1. VBA の関数は、通常、データ型を持つ変数です。あなたの例では、データ型がありません。つまり、データ型が に設定されていVariableます。
  2. どうやら、データ型がたまたまブール値であるため、関数が に設定されていFalseます。
  3. セルの内容を変更するために関数を使用するのは悪いスタイルです。ただし、コードは Sub として問題なく動作します。

    Sub test()  
      Application.Volatile (False)  
      Worksheets("Sheet1").Range("A1:A1").Clear  
    End Sub
    
于 2013-05-29T04:52:23.620 に答える
1

正確にはわかりませんが、私が知る限り、関数で Excel シートをフォーマットすることはできません。代わりに、サブルーチンを使用してそれを行うことができます。

Sub test()
  Worksheets("sheet1").Range("A1").Clear
End Sub
于 2013-05-29T05:00:58.693 に答える