Код VBA меняется с текста на цифру c значение диапазона, но не высокие столбцы? - PullRequest
1 голос
/ 05 апреля 2020

я написал код в VBA для изменения значений в диапазоне от текста до общего (число). он работает нормально, однако есть одна проблема. когда я проверил все значения столбца, только строка с целочисленным значением («2345») изменилась на целое (2345), но строки со значениями с плавающей запятой («123.456») не изменились вообще, тип изменился на General но значение остается прежним.

вот код vba

If (ws.Name = "TB") Then
    shTB.Activate
    [A:A].Select
    With Selection
        .NumberFormat = "General"
        .Value = .Value
    End With 

, как показано в таблице ниже, но значения с плавающей запятой вообще не изменились. Как вы можете видеть, только строка 119 изменилась на Number или integer. Любое предложение или помощь очень важны!

enter image description here

Ответы [ 2 ]

1 голос
/ 05 апреля 2020

Из ваших результатов видно, что существует несоответствие между текстовым форматом ваших данных и настройками локали.

Похоже, ваши данные получены из источника, в котором запятая является десятичной запятой разделитель, а не период. Попробуйте:

Sub dural()
    With Range("A:A")
            .NumberFormat = "General"
            .Replace ",", "."
            .Value = .Value
    End With
End Sub
0 голосов
/ 05 апреля 2020

если что "." означает разделитель тысяч, а затем просто удалите его

With shTB.Range("A:A")
    .Replace what:=".", replacement:=vbNullString
    .NumberFormat = "General"
End With

Кстати, как видите, вам не нужно ничего выбирать: просто действуйте по прямой ссылке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...