我有一张包含6张的工作簿。我和For Each一起走过他们。任务是: 1)遍历具有指定范围的每个单元格
2)如果单元格不为空并且仅包含数字那么添加到单元格“мм”的末尾。否则跳过这个单元格。
但事实上,脚本只对第一张表(Worksheet)有用。它不会对其他工作表进行任何更改。我不知道为什么会这样。我认为,代码中存在一些错误或错误,但我仔细检查了它,一切似乎都是正确的。请帮帮我:)。
Sub SaveWorksheetsAsCsv()
Dim xWs As Worksheet
Dim xDir As String
Dim folder As FileDialog
Dim r As Range
Dim rr As Range
Dim rrrrrr As Range
Dim cell As Range
k = Cells(Rows.Count, "A").End(xlUp).Row
Set folder = Application.FileDialog(msoFileDialogFolderPicker)
If folder.Show <> -1 Then Exit Sub
xDir = folder.SelectedItems(1)
For Each xWs In Application.ActiveWorkbook.Worksheets
If xWs.Name Like "Worksheet" Then
Set r = Range("FA2:FA" & k)
For Each cell0 In r
If IsEmpty(cell0.Value) = False And IsNumeric(cell0.Value) = True Then
cell0.Value = cell0.Value & " мм"
End If
Next
'xWs.Columns(41).EntireColumn.Delete
End If
If xWs.Name Like "Worksheet 1" Then
Set rr = Range("AG2:AG" & k)
For Each cell1 In rr
If IsEmpty(cell1.Value) = False And IsNumeric(cell1.Value) Then
cell1.Value = cell1.Value & " мм"
End If
Next
'xWs.Columns(126).EntireColumn.Delete
End If
If xWs.Name Like "Worksheet 5" Then
Set rrrrrr = Range("FR2:FR" & k)
For Each cell5 In rrrrrr
If IsEmpty(cell5.Value) = False And IsNumeric(cell5.Value) Then
cell5.Value = cell5.Value & " мм"
End If
Next
End If
xWs.SaveAs xDir & "\" & xWs.Name, xlCSV, local:=True
Next
End Sub
答案 0 :(得分:3)
需要调整这些语句集以纠正表格引用。当前代码将始终查看活动工作表,并且范围引用不合格。
Set r = Range("FA2:FA" & k)
Set r = xWs.Range("FA2:FA" & k)
答案 1 :(得分:1)
您可以大量缩短和利用您的代码。
首先,您的var string1 = "twitter OR facebook AND NOT (hello OR p )"
var string2 = "twitter OR facebook AND NOT (hello OR p )"
var string3 = "twitter OR facebook AND NOT (hello OREGAN p )"
var expr = /(\w+?)(?=\s+OR\s+)/g
var result1 = string1.match(expr)
var result2 = string2.match(expr)
var result3 = string3.match(expr)
console.log(result1, result2, result3)
尝试获取最后一行,需要位于k = Cells(Rows.Count, "A").End(xlUp).Row
内,因为每个工作表的最后一行都不同。
其次,您可以使用For Each xWs In Application.ActiveWorkbook.Worksheets
。
If
第三,Range不需要3个不同的对象,例如Select Case
,r
和rr
。 rrr
,cell0
和cell1
也是如此,您只能使用一个cell5
和r
。
cell
(我的If
)中唯一不同的是您设置的范围Select Case
。其余的,循环遍历r
对于所有3个标准都是相同的,所以你可以将这个部分放在循环之外,并且只有一次。
修改后的代码
r.Cells