2017-01-31 3 views
0

日付を含む列を現在の日付形式ではないテキストから列に変換しようとしています。私はExcelで簡単にこれを行うことができます。しかし、VBAを適切に行うための課題に直面しています。VBAを使用する日付を含む列のテキストから列へ

私は複数のコードを試しました。ただし、列の一部のセルのみを日付形式に変換していますが、すべてを変換していません。

ご協力いただければ幸いです。このようにそれを作る、とにかく

With ActiveSheet.UsedRange.Columns("B").Cells 
.TextToColumns Destination:=.Cells(1), DataType:=xlFixedWidth, FieldInfo:=Array(0, xlYMDFormat) 
.NumberFormat = "yyyy-mm-dd" 'change to any date-based number format you prefer the cells to display 
End With 
+0

何を変更すべきかを見るには 'debug.print ActiveSheet.UsedRange.Columns(" B ")。address'と書いてください。 – Vityata

+0

ありがとうございました。ただし、これは出力には影響しません。私は同じ結果を得ています。 –

+0

即時のウィンドウで何を提供していますか? 'control + G'を押して、そこを見ます。 – Vityata

答えて

0

:以下

は、私が使用していたコードである

Option Explicit 

Public Sub TestMe() 

With ActiveSheet.Range("B:" & lastRow(column_to_check:=2)) 

    .TextToColumns Destination:=.Cells(1), DataType:=xlFixedWidth, FieldInfo:=Array(0, xlYMDFormat) 
    .NumberFormat = "yyyy-mm-dd" 
End with 
End Sub 

Public Function lastRow(Optional str_sheet As String, Optional column_to_check As Long = 1) As Long 

    Dim shSheet As Worksheet 

     If str_sheet = vbNullString Then 
      Set shSheet = ThisWorkbook.ActiveSheet 
     Else 
      Set shSheet = ThisWorkbook.Worksheets(str_sheet) 
     End If 

    lastRow = shSheet.Cells(shSheet.Rows.Count, column_to_check).End(xlUp).Row 

End Function 

LASTROW機能はcolumn_to_checkの最後の行を返します。あなたの場合、2番目の列。

+0

こんにちはVtyata、それはまだ同じ出力です。また、最初の半分のセルまたは最後の半分のセルを変換していないことにも言及したいと思います。しかし、私のコードは、列内のいくつかのランダムなセルを正しく変換し、残りのセルには影響しません。 –

+0

手動で行う場合は、正しく変換することに成功しますか?はいの場合は、マクロを記録してください。 – Vityata

+0

はい、手動で作業しました。私はそのマクロも録音しようとしました。しかし、マクロを実行したときには、再び列内のいくつかのランダムなセルのみを変換できますが、列内のすべてのセルは変換できませんでした。 : –

関連する問題