2017-08-30 15 views
1

設定された書式> "日付"のセルの範囲があります。既定では、数値を入力すると、入力した日と1900年1月の日付に変換されます。現在の月/ 1900年1月の代わりに

これを変更するには、今日の年月日を入力した後、常に現在の月と年が得られますか?

LibreOffice Calcでこれを行う方法aswell?

+0

このワークブックを計算するときに 'Options - > Advanced - >に行き、* 1904 date systemを使う*のチェックボックスをオンにして1904年1月に変更することができます。 2013年の同様の質問ですが、実際の解決策もありません:https://stackoverflow.com/questions/14993664/change-default-date-value-while-entering-time – RealCheeseLord

+0

これは基本的には基本的に実装が不可能です。日付表現は、セル値に適用される数値書式です。数式だけを含む列を追加することで、問題を部分的に解決することができます。入力を含む列が列Aであり、セルC1が公式のゼロ日付へのオフセットを含むと仮定します。次に、B列に= A1 + $ C $ 1のような数式を使用し、B列全体の数式を入力します。 – moggi

答えて

1

これはExcel用です。それがワークシートのコードであるので、非常に簡単にインストールし、使用する自動化されて

Private Sub Worksheet_Change(ByVal Target As Range) 
    Dim rng As Range, rint As Range, r As Range 
    Set rng = Range("A1:A10") 
    Set rint = Intersect(rng, Target) 

    For Each r In rint 
     Application.EnableEvents = False 
      r.Value = DateSerial(Year(Date), Month(Date), r.Value) 
     Application.EnableEvents = True 
    Next r 
End Sub 

この例では、 A1 A10 を通して行うワークシートのコード領域に次のイベントマクロの範囲を使用しています
  1. 右クリックし、Excelのウィンドウの下部
  2. 近くタブ名は、コードの表示を選択する - これはで何かを貼り付けVBEウィンドウ
  3. が表示されますVBEウィンドウを閉じます。

問題がある場合は、まず試用ワークシートで試してみてください。

ブックを保存すると、マクロが保存されます。 後で2003その後、Excelのバージョンを使用している場合は、マクロを削除するにはかなりの.xlsx

より.xlsmとして にファイルを保存する必要があります。

  1. 上記のようVBEウィンドウを持ち出しますアウト
  2. はクリアコード
  3. 参照、一般的にはマクロの詳細についてはVBEウィンドウに

を閉じる:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

イベントマクロ(ワークシートのコード)の詳細については、以下を参照してください。これが動作するために

http://www.mvps.org/dmcritchie/excel/event.htm

マクロを有効にする必要があります!

コードでは、入力された値が正しく設定された日付に置き換えられます。範囲をあなたのニーズに合わせて変更することができます。

1

@ Gary's Studentのソリューションは、以下のようにLibreOfficeに適合させることができます。

Sub ContentChangedHandler(oChangedRange As Object) 
    Dim oSheet As Object 
    Dim oCheckingRange As Object 
    Dim oIntersectRanges As Object 
    Dim oIntersectRange As Object 
    Dim oData() 
    Dim oRow() 
    Dim i%, j%, k% 
    oSheet = ThisComponent.getSheets().getByIndex(0) 
    oCheckingRange = oSheet.getCellRangeByName("A1:A10").getRangeAddress() 
    oIntersectRanges = oChangedRange.queryIntersection(oCheckingRange) 
    For i = 0 to oIntersectRanges.getCount() - 1 
     oIntersectRange = oIntersectRanges.getByIndex(i) 
     oData() = oIntersectRange.getDataArray() 
     For j = LBound(oData()) To UBound(oData()) 
      oRow() = oData(j) 
      For k = LBound(oRow()) To UBound(oRow()) 
       oRow(k) = CLng(DateSerial(Year(Date), Month(Date), oRow(k))) 
      Next 
     Next 
     oIntersectRange.setDataArray(oData()) 
    Next 
End Sub 

イベントを設定するには、シートタブを右クリックし、Sheet Eventsを選択します。上記のマクロにContent changedイベントを割り当てます。

必ずFormat -> Cellsに移動して日付としてセルをフォーマットしてください。そうでない場合は、通常の数値として表示されます。

関連する問題