1

クラスモジュールを作成し、Timeという名前を付けました。Timeオブジェクトのインスタンスを作成して返す関数が必要でした。以下のコードを参照してください。関数を書くためのより良い方法を考えることができれば、私はすべての耳です。私が抱えている問題は、現状では、次のステートメントを作成するときです。

tsheet.MondayStart = Time.Construct(Item.Value)

この呼び出しの前のdebug.printステートメントは、Item.Valueが「08:30」であることを示しています。tsheetはTimeSheetタイプであり、MondayStartプロパティにはTimeタイプのオブジェクトが割り当てられることが期待されています。ただし、このステートメントを実行時に実行すると、オブジェクトに必要なエラーが発生します。パランセシスを削除しようとしましたが、「コンパイルエラー:ステートメントの終わりが予想されます」という別のエラーが発生するだけです。

これを修正するにはどうすればよいですか?お知らせ下さい。あまりにも悪いvbaは、コンストラクターの概念をサポートしていません:-(

アラン

'IN TIME CLASS MODULE
Public Function Construct(Value As String) As Time
  'This function expects a string formatted like: 08:30
  'Time.Delimiter returns ":"
  Dim tempTime As Time
  Dim vhours As Integer
  Dim vminutes As Integer
  Dim arrTime() As Time

  arrTime = Split(Value, Time.Delimiter)
  hours = CInt(Trim(arrTime(0)))
  minutes = CInt(Trim(arrTime(1)))
  Set tempTime = New Time
  tempTime.hours = vhours
  tempTime.minutes = vminutes

  Construct = tempTime
End Function
4

2 に答える 2

1

実際には、既に実装されている VBA メソッドの DateValue と TimeValue を使用することをお勧めします。これらのメソッドは、文字列を受け取り、必要なものを提供します。

ここで車輪を再発明する必要があるかどうかはわかりません。もちろん、私が何かを見逃しているかもしれませんので、私に知らせてください。

于 2012-12-13T06:43:38.480 に答える
0

新しい結果を次のように使用します。

Set MonStart = New TimeFrame
Set tsheet.MondayStart = MonStart.Initialize(MonStart, Item.Value)

(比較のために、ここに前のものがあります:

Set MonStart = New TimeFrame
Set tsheet.MondayStart = TimeFrame.Initialize(MonStart, Item.Value)

)。

Set関数の戻り値の割り当てにも使用します。

最初のコード例の場合:

...
    Set Construct = tempTime
End Function

その他のコード例の場合:

...
    Set Initialize = Value
End Function
于 2012-12-17T00:17:10.073 に答える