触发实现
报警哪儿错了,
自动删前后空格。
处理内容 | sheet | range |
要查前后空格的部分1 | sheet1 | a:a |
要查前后空格的部分1 | sheet2 | a1:b14 |
index1 |
index2 |
index3 |
index4 |
index5 |
index6 |
index7 |
index8 |
index9 |
index10 |
index11 |
index12 |
key1 | value1 |
key2 | value2 |
key3 | value3 |
key4 | value4 |
key5 | value5 |
key6 | value6 |
key7 | value7 |
key8 | value8 |
key9 | value9 |
key10 | value10 |
key11 | value11 |
key12 | value12 |
key13 | value13 |
key14 | value14 |
第一次错的
Private Sub Workbook_Open()
MsgBox "关闭前会查指定列的前后空格!"
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim a As Object
Dim arr1()
For Each i In Sheets("range").Range("b:b")
arr1(i) = Sheets(Range("b" & i)).Range("c" & i)
Next i
For Each i In arr1()
For Each j In arr1(i).Value
Cells().Value = Application.WorksheetFunction.Trim(Cells().Value)
Next j
Next i
End Sub
第2次错的
Sub test11()
'告知,报错记录,提示,选择框,自动去除等
'还需要指定哪些列需要去空格
Dim arr1 As Object
Set arr1 = Sheets("range").Cells(1, 3).CurrentRegion
redim arr1(1 to sheets("range").cells(65535,3)).xlup , 1 to sheets("range").cells(65535,4)).xlup)
For i = 2 To UBound(arr1(1))
For j = 1 To Cells(65535, 1).End(xlUp)
Cells(j, 1).Value = Application.WorksheetFunction.Trim(Cells(j, 1).Value)
Next j
Next i
End Sub
第3次错的
Sub test11()
'告知,报错记录,提示,选择框,自动去除等
'还需要指定哪些列需要去空格
Dim arr1 As Variant '不能是object,也不能是string
Set arr1 = Sheets("range").Cells(1, 3).CurrentRegion
a = Cells(1000, 3).End(xlUp).Row '一般也不会超过1000的数据,超了就用65535把或另外一个方法
b = Cells(1000, 4).End(xlUp).Row
' ReDim arr1(1 To a, 1 To b) As Integer 和 set重复定义了?
'检查ab
'Debug.Print a & vbCrLf
'Debug.Print b
If a <> b Then
MsgBox ("输入的表名和范围没有一一对应,请修改数据")
Exit Sub
End If
'检查数组
'For i = 1 To a
' For j = 1 To b
' Debug.Print arr1(i, j)
' Next j
'Next i
For i = 2 To a
For j = 1 To Sheets(arr1(i, 3)).Range(arr1(i, 4)).Rows.Count
Sheets(arr1(i, 3)).Range(arr1(i, 4)).Cells(j, 1).Value = Application.WorksheetFunction.Trim(Cells(j, 1).Value)
Next j
Next i
End Sub
------
Sub test11()
'告知,报错记录,提示,选择框,自动去除等
'还需要指定哪些列需要去空格
Dim arr1 As Variant '不能是object,也不能是string
Set arr1 = Sheets("range").Cells(1, 3).CurrentRegion
a = Cells(1000, 3).End(xlUp).Row '一般也不会超过1000的数据,超了就用65535把或rows.count
b = Cells(1000, 4).End(xlUp).Row
' ReDim arr1(1 To a, 1 To b) As Integer 和 set重复定义了?
'检查ab
'Debug.Print a & vbCrLf
'Debug.Print b
If a <> b Then
MsgBox ("输入的表名和范围没有一一对应,请修改数据")
Exit Sub
End If
'检查数组
'For i = 1 To a
' For j = 1 To b
' Debug.Print arr1(i, j)
' Next j
'Next i
Debug.Print arr1(2, 1)
Debug.Print arr1(2, 2)
'aaa="sheet1"
'debug.print sheets(aaa).name
'rem 直接写 bbb=str(arr1(2,1)) debug.print bbb VBA直接卡死报错
Rem 只有这个可以写法可以
'Debug.Print arr1(2, 1) & "." & arr1(2, 2)
'无论arr1(2,1) 加不加引号,都无法正确使用?
'Debug.Print Sheets(arr1(2, 1)).Name
'Debug.Print Sheets("arr1(2, 1)").Range("arr1(2, 2)").Rows.Count
Rem Debug.Print Sheets(arr1(2, 3)).Range(arr1(2, 4)).Rows.Count 错误,数组引用不是表格引用,index超了
For i = 2 To a '数组index默认0开始吧?EXCEL的二维数组都从1开始?维度默认1开始
For j = 1 To Sheets(arr1(i, 3)).Range(arr1(i, 4)).Rows.Count
'Debug.Print Sheets(arr1(i, 3)).Range(arr1(i, 4)).Rows.Count
Sheets(arr1(i, 3)).Range(arr1(i, 4)).Cells(j, 1).Value = Application.WorksheetFunction.Trim(Sheets(arr1(i, 3)).Range(arr1(i, 4)).Cells(j, 1).Value)
Next j
Next i
End Sub