После копирования и вставки значений из одной книги в другую формула не работает с определенным диапазоном, пока я не дважды щелкну ячейки - PullRequest
0 голосов
/ 04 ноября 2019

Используя VBA, я открываю одну книгу, копирую данные и вставляю ее в другую книгу. Во второй книге я установил формулу для определенного диапазона настраиваемого формата значений (дд / мм / гггг чч: мм), но формула не работает. Значения сохраняются в левой части ячеек в виде текста в произвольном формате, пока я дважды не нажму. Формат в обеих книгах (рабочих листах) одинаков, и я хочу сохранить его.

Я пытался исправить это, используя:

range.TextToColumns Destination:=range DataType:=xlFixedWidth FieldInfo:=Array(Array(0,9),Array(1,1), Array(16,9))

Это работает на полпути. Дата подходит для правой стороны ячеек, но мой день от пользовательской даты на 17 дней меньше ???: D Когда я опускаю Array (0,9), он возвращает дополнительную дату 02/01/1990, и моя исходная дата перемещается наследующий столбец.

Кто-нибудь есть решение? Как именно .TextToColumns работает? Как я могу правильно объявить arg для FieldInfo, чтобы получить исходную дату и разместить ее справа от ячеек?

1 Ответ

0 голосов
/ 04 ноября 2019

ниже - это пример того, как преобразовать дату в текстовом формате (ячейка B1) в фактическую дату. Обратите внимание, что текстовый формат выровнен по левому краю, а формат даты выровнен по правому краю.

Имейте в виду, что дата - это число;> целочисленная часть - это дата, а десятичная часть - время.

enter image description here

Public Sub sTestDate()

  Dim v As Variant

  v = Sheet1.Range("B1").Value
  Sheet1.Range("B2").Value = CDbl(CDate(v))
  Sheet1.Range("B3").Value = CDbl(CDate(v))
  Sheet1.Range("B3").NumberFormat = "dd/mm/yyyy hh:mm"

End Sub
...