如何在VBA中修剪数组值?拆分字符串后修剪数组元素遇问题
解决VBA中拆分字符串后修剪数组元素的问题
我来帮你理清这个问题的根源,然后给出可行的解决方案:
为什么第一个代码会报错?
Split(cell, ";")返回的是一个字符串数组,而Trim函数只能接收单个字符串作为参数,不能直接作用于整个数组。直接把数组传给Trim会触发类型不匹配的错误,这就是你遇到的第一个问题。
为什么第二段代码修剪后的值没保存到数组?
当你用For Each object In objects遍历数组时,object变量是数组元素的副本,不是对原数组元素的引用。你修改的只是这个临时副本,原数组里的元素根本没被改动,所以修剪后的值无法保存回objects数组。
正确的解决方案
方法1:通过索引循环修改原数组
直接使用数组的上下界索引来遍历,这样可以直接修改原数组的元素:
Dim cell As String Dim objects() As String Dim i As Integer cell = Range("X74").Text objects = Split(cell, ";") ' 遍历数组的每个索引位置,直接修改原元素 For i = LBound(objects) To UBound(objects) objects(i) = Trim(objects(i)) Debug.Print objects(i) ' 这里打印的就是修改后的原数组元素 Next i
LBound(objects)获取数组的起始索引,UBound(objects)获取结束索引,通过objects(i)直接访问并修改原数组的元素,这样修剪后的值就会被永久保存下来。
额外提示
如果需要去除字符串中间的多余空格(不止首尾),可以替换成objects(i) = WorksheetFunction.Trim(objects(i)),这个是调用Excel的工作表函数,能处理中间的连续空格。
内容的提问来源于stack exchange,提问作者justuswolff
相关产品推荐
相关产品推荐

