Excel VBA - Значение поля в Number - PullRequest
0 голосов
/ 22 февраля 2012

Мой генератор цитат создает документ Excel, и я хочу запустить макрос для него, чтобы просто сохранить его вычисления. По какой-то причине он говорит: «Число хранится в виде текста», когда есть числа. Как я могу изменить их на числовой формат с помощью макроса? Я выяснил, если я нажимаю один раз в строке формул, проблема тоже решена.

Код ниже - то, что у меня сейчас, но это не решит ошибку.

Range("A1:A" & LastRow).Select
Selection.NumberFormat = "0"

Столбец A содержит сумму (1, 2, 3 и т. Д.). У меня есть другой столбец с той же проблемой, но он содержит валюту в евро и имеет 2 знака после запятой.

Range("I1:I" & LastRow).Select
Selection.NumberFormat = "0.00"

enter image description here

Спасибо за вашу помощь! :)

Дополнительный привет Сиддхарту, который помог мне завершить этот полный вопрос.

Ответы [ 2 ]

2 голосов
/ 22 февраля 2012

Том,

Есть 3 способа решить эту проблему

1 ) Вернитесь к генератору котировок и посмотрите, как он сохраняет данные в Excel Sheet иизмените код там

2 ) Вручную : выделите диапазон, нажмите восклицательный знак рядом с зеленым треугольником и нажмите «Преобразовать в число». См. снимок

enter image description here

3 ) Используйте этот код.

Sub Sample()
Dim LastRow As Long, i As Long

LastRow = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row

Sheets("Sheet1").Range("A1:A" & LastRow).NumberFormat = "0"

For i = 1 To LastRow
    If Val(Sheets("Sheet1").Range("A" & i).Value) <> 0 Then _
    Sheets("Sheet1").Range("A" & i).Formula = _
    Val(Sheets("Sheet1").Range("A" & i).Value)
Next i

Dim temp As Double

LastRow = Sheets("Sheet1").Range("I" & Rows.Count).End(xlUp).Row

Sheets("Sheet1").Range("I1:I" & LastRow).NumberFormat = "\$#,##0.00"

For i = 1 To LastRow
    If Val(Sheets("Sheet1").Range("I" & i).Value) <> 0 Then
    temp = Sheets("Sheet1").Range("I" & i).Value
    Sheets("Sheet1").Range("I" & i).ClearContents
    Sheets("Sheet1").Range("I" & i).Value = temp
    End If
Next i
End Sub

СЛЕДУЙТЕ ЗА

Прикрепленный снимок до и после

enter image description here

ПОДРОБНЕЕ СЛЕДУЮЩИЙ (ВАЖНО)

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

Например, в Голландии, Бельгии, вы должны использовать "," для десятичной дроби.Пожалуйста, смотрите снимок.

enter image description here

2 голосов
/ 22 февраля 2012

Попробуйте по-разному: -

Способ 1

Selection.NumberFormat = "General" 

Способ 2

vStr = "1000.5"

intNum = CInt(vStr)

Способ 3

Преобразование текста в числа с помощью VBA Если вы часто преобразуете текст в числа, вы можете использовать макрос.Добавьте кнопку на существующую панель инструментов и прикрепите макрос к этой кнопке.Затем выберите ячейки и нажмите кнопку на панели инструментов.

Sub ConvertToNumbers() 
  Cells.SpecialCells(xlCellTypeLastCell) _
    .Offset(1, 1).Copy
  Selection.PasteSpecial Paste:=xlPasteValues, _
     Operation:=xlPasteSpecialOperationAdd
  With Selection
     .VerticalAlignment = xlTop
     .WrapText = False
  End With
  Selection.EntireColumn.AutoFit
End Sub 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...