0

不揮発性時間関数BNOW()が異なる時間に手動で入力された列があります。簡単に言うと、たとえばA列で

A1=BNOW()       it's value=3/25/2013 10:00:23

A2=BNOW()       it's value=3/25/2013 10:03:09

A1とA2の値を、それぞれの元のタイムスタンプから10分後の日付のみ(つまり、2013年3月25日)に変更したいと思います。これをVBAでどのようにコーディングする必要がありますか?

私が欲しいのは、ExcelにBNOW()を使用して各セルを監視させ、値をそれぞれの時刻値の10分後の日付に自動的に変更させることです。

PS:BNOW()は、Excel NOW()の不揮発性ユーザー定義関数です。

4

2 に答える 2

0

NumberFORMATプロパティを使用してVBAでこれを行うことができます。

cell.NumberFormat="dd/mm/yy;@"

これは値を変更せず、テキストとして表示される方法のみを変更します。

また、値をテキスト文字列に変更することもできます。

activecell.Value=day(activecell) & "/" & month(activecell) & "/" & year(activecell)

しかし、最良のオプションは、Excelフォーマット/条件付きフォーマットを使用してそれを行うことです

お役に立てれば

フィリップ

于 2013-03-26T09:36:12.823 に答える
0

ワークシートのChangeイベントでApplication.Ontimeを使用して、セルを変更するサブを呼び出すことができます。

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Cells.Count = 1 Then

    If Target.Formula = "=NOW()" Then
        Application.OnTime Now() + TimeValue("00:00:02"), "'DoIt """ & Target.Parent.Name & "!" & Target.Address & """'"
    End If

End If

End Sub

セルを変更するサブは次のようになります。

Public Sub DoIt(t As String)

Application.EnableEvents = False
Range(t).NumberFormat = "General"
Range(t).Value = Format(Range(t).Value, "m/dd/yyyy")
Application.EnableEvents = True

End Sub

このサブは、シートのクラスモジュールではなく、コードモジュールに含まれている必要があります。また、Application.Ontimeを介してパラメーターを使用してサブを呼び出す際の制限のため、シート名にスペースを含めることはできないと思います。

于 2013-03-27T17:11:37.173 に答える