2017-10-23 6 views
0

異なる列の複数のワークシートの日付を修正しようとしていますが、方法を理解できません。異なるワークシート内の複数の列に数式を設定するVBA

Sub FixDate() 
Dim i As Long 

Sheets("Sheet1").Select 

For i = 2 To Range("N" & Rows.Count).End(xlUp).Row 
    With Range("N" & i) 
     .NumberFormat = "mm/dd/yy hh:mm" 
     .Value = DateValue(.Value) 
    End With 
Next i 

For i = 2 To Range("O" & Rows.Count).End(xlUp).Row 
    With Range("O" & i) 
     .NumberFormat = "mm/dd/yy hh:mm" 
     .Value = DateValue(.Value) 
    End With 

Next i 


Sheets("Sheet2").Select 

For i = 2 To Range("F" & Rows.Count).End(xlUp).Row 
    With Range("F" & i) 
     .NumberFormat = "mm/dd/yy hh:mm" 
     .Value = DateValue(.Value) 
    End With 
Next i 

End Sub 

私は4つのワークシートがあり、異なる列の下に日付を修正する必要があります。お知らせ下さい。

+1

あなたの質問は何ですか?あなたはそれを聞かなかった。 [ask]をお読みください。 –

答えて

1

すべてのセル形式を"mm/dd/yy hh:mm"に変更するSubを持つようにコードを分割し、複数回呼び出して関連する列(Stringとして)とWorksheetオブジェクトを渡すことができます。

注::セルフォーマットを変更するためにワークシートをSelectにする必要はありません。

コード

Option Explicit 

Sub FixDate() 

' call sub, pass column "N" and worksheet object "Sheet1" 
FixDatesInCol "N", ThisWorkbook.Worksheets("Sheet1") 

FixDatesInCol "O", ThisWorkbook.Worksheets("Sheet1") 

FixDatesInCol "F", ThisWorkbook.Worksheets("Sheet2") 

End Sub 

Sub FixDatesInCol(Col As String, ws As Worksheet) 

Dim i As Long 

With ws 
    For i = 2 To .Range(Col & .Rows.Count).End(xlUp).Row 
     With .Range(Col & i) 
      .NumberFormat = "mm/dd/yy hh:mm" 
      .Value = DateValue(.Value) 
     End With 
    Next i 
End With 

End Sub 
0

またはこのような:

Sub dates() 
Dim sShts As String 
Dim sCols As String 
Dim i As Integer 
Dim j As Integer 

sCols = "N;O;F" 
sShts = "1;1;2" 

For j = 0 To UBound(Split(sShts, ";")) 
    Debug.Print j 
    With Worksheets("sheet" & Split(sShts, ";")(j)) 
     For i = 1 To .Range(Split(sCols, ";")(j) & Rows.Count).End(xlUp).Row 
     With .Range(Split(sCols, ";")(j) & i) 
      .NumberFormat = "mm/dd/yy hh:mm" 
      .Value = DateValue(.Value) 
     End With 

    Next i 
    End With 
Next j 
End Sub 

あなただけの編集sColsとsShtsでワークシート/列を追加/調整することができます。

+0

注:行のカウントに特に 'Integer'を使用しないでください。Excelは' Integer'が処理できる行よりも多くの行を持ちます[代わりに 'Long''を使う](https://stackoverflow.com/a/26409520/3219613)。 –

関連する問題