Как я могу преобразовать любую ячейку в целое число, если это возможно в VBA для Excel? - PullRequest
3 голосов
/ 31 марта 2011

Я хотел бы создать функцию, которая будет принимать в качестве параметра Cell и возвращать Integer.Если преобразование не было успешным, оно должно просто вернуть 0, не выдавая сообщения об ошибках пользователю.

Меня не волнуют ячейки, содержащие значения с плавающей запятой, они также могут вернуть 0, так как он не выглядиткак целое числоНо текстовые значения, такие как 00001234 должны возвращать 1234, а 12 34 должны возвращать 0.

Ответы [ 2 ]

9 голосов
/ 31 марта 2011

Как насчет этого:

Option Explicit

Public Function ConvertToInteger(Cell As Range) As Integer
   On Error GoTo NOT_AN_INTEGER
   ConvertToInteger = CInt(Cell.Value)
   Exit Function
NOT_AN_INTEGER:
   ConvertToInteger = 0
End Function

Обратите внимание, например, что значение 5,6 вернет 6, хотя. Если вы хотите, чтобы это было 0, вы должны проверить это и сделать соответственно.

2 голосов
/ 01 апреля 2011

Если требуется вернуть целое число независимо от длины входной строки, вы можете отформатировать ячейку так, чтобы она содержала 0 десятичных знаков, и выполнить что-то вроде ниже, что автоматически повышает тип данных до требуемой точности.В противном случае вам пришлось бы усекать входное значение, если вы действительно хотите получить целое число VBA.

Public Function ConvertToIntegral(Cell As Range) As Variant
   On Error GoTo catch
   Dim result As Variant
   result = Val(Cell.Value)
   ConvertToIntegral = result
   Exit Function
catch:
   ConvertToIntegral = 0
End Function
...