私のデータプロバイダは、私が取得する.XLSXファイル内のいくつかの点を変更しました。私は、このアプリケーションが期待するモデルに応じてデータを修正するために新しいサブを追加しました:VBA Excelアドイン:列の書式を一般的な日付からカスタム日付に変更するコード
Sub Feb27FixModel()
ActiveSheet.Range("H2").End(xlDown).NumberFormat = "dd-mmm-yyyy" 'change format of Processed Date
Dim colNum As Integer
colNum = ActiveSheet.Rows(1).Find(what:="Legacy code", lookat:=xlWhole).Column
' Done twice to insert 2 new cols
ActiveSheet.Columns(colNum + 1).Insert
ActiveSheet.Columns(colNum + 1).Insert
' New col headings
ActiveSheet.Cells(1, colNum + 1).Value = "Origin Code"
ActiveSheet.Cells(1, colNum + 2).Value = "Jurisdiction Code"
Range("A1").Select
ActiveCell.FormulaR1C1 = "County Name"
Range("B1").Select
ActiveCell.FormulaR1C1 = "State Abbreviation"
ActiveWorkbook.Save
End Sub
すべてが上記の1行目の結果を除き動作します。アクティブなワークシートでは、列Hはヘッダー行の値が「処理済日付」であり、H2セルとその下のセルは、Generalとして11/15/2016のような値で格納されます。すべての日付をdd-mmm-yyyyというカスタム日付に変更する必要があります。以下の文は、これは私のために行わ取得に失敗:
ActiveSheet.Range("H2").End(xlDown).NumberFormat = "dd-mmm-yyyy"
EDIT(01March2017):下記@Jeepedからの回答に
おかげで、私は別のステートメントを追加し、これがいたコードです解決策:
With ActiveSheet
.Range(.Cells(2, "H"), .Cells(.Rows.Count, "H").End(xlUp)).NumberFormat = "dd-mmm-yyyy"
.Range(.Cells(2, "H"), .Cells(.Rows.Count, "H").End(xlUp)).Value = ActiveCell.Text
End With
EDIT(02March2017):
私が作りました昨日の間違い。デバッグでは、ブレークポイントのワークシートで適切なセルを選択しておく必要があります。したがって、ActiveCell.Text "sort of worked"を参照してください。それは、列H(最初の行を除く)のすべての行に、「2014年10月14日」になるようにテキストを複製する効果がありました。これは最小限の許容であった。
本当に必要なのは、列Hのすべての行のテキストを取得し、保存された値を2016年10月14日から2016年14月10日などに表示するように変更するステートメントです。フォーマットをカスタムに変更します。私は保存された値も変更する必要があります。私はそれをする方法を知らない。
[Excel VBAマクロでの選択の使用を避ける方法](http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros)を参照してください。 – Jeeped