Как суммировать список чисел в vba? - PullRequest
0 голосов
/ 13 июня 2018

В моем макросе Word есть функция vba, которая возвращает список чисел, разделенных запятыми, в виде строки.Например;

var = (1.5, 2, 3, 5) 

Как бы я сложил их, чтобы найти сумму?

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

замените "," на "+" и используйте формулу Evaluate в строке.Примечание. Нужно создать ссылку на экземпляр Excel, что, по меньшей мере, немного тяжело!Я не могу найти слово, эквивалентное функции Evaluate, которое кажется немного странным:

Option Explicit
Public Sub test()
    Dim inputStr As String, oXL As Object
    inputStr = "1.5, 2, 3, 5"
    With CreateObject("Excel.Application")
    MsgBox .Evaluate(Replace(inputStr, ",", "+"))
       .Quit
    End With
End Sub
0 голосов
/ 13 июня 2018

Вам нужно разбить строку на строковый массив, преобразовать каждую подстроку в число, используя Val, CDbl или CSng (в зависимости от ваших требований) , а затем добавьте числа.

Вот пример:

Dim inputStr As String
inputStr = "1.5, 2, 3, 5"
Dim arr() As String
arr = Split(inputStr, ",")

Dim total As Single     ' Or `Double` if you need more accuracy.
For Each subStr In arr
    total = total + Val(subStr)     ' Use `Val` if you want to ignore non-numeric values.
    'total = total + CSng(subStr)   ' Use `CSng` to break when finding non-numeric values.
    'total = total + CDbl(subStr)   ' Use `CDbl` if you need more accuracy.
Next

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