Excel VBA跨越工作表的dynamic范围运行macros
作为最后一个问题的延伸,我试图在所有工作表中运行一个macros,你们成功帮助我做到这一点。 我被告知,工作表名称不能硬编码,所以我将不得不修改我目前的解决scheme。
Sub RemoveCarriageReturns() Dim MyRange As Range Dim NameList() As Variant NameList = Array("OTCUEXTR", "OTFBCUDS", "OTFBCUEL") Application.ScreenUpdating = False Application.Calculation = xlCalculationManual For i = 0 To 2 With Worksheets(NameList(i)) For Each MyRange In .UsedRange If 0 < InStr(MyRange, Chr(10)) Then MyRange = Replace(MyRange, Chr(10), "") End If Next MyRange End With Next i Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic End Sub
我已经尝试使用For循环来收集每个工作表的名称,但是我觉得在2天后,我茫然地盯着这个,我有限的VBA知识已经用完了,我卡住了,我真的很感激一些关于如何让这个macros可以在数量和名称上发生变化的表单上工作。
很高兴在评论中提供您需要的更多信息
你可以这样做(或者可以使用原始代码中的索引)。
Sub RemoveCarriageReturns() Dim MyRange As Range Dim ws As Worksheet Application.ScreenUpdating = False Application.Calculation = xlCalculationManual For Each ws In Worksheets With ws For Each MyRange In .UsedRange If 0 < InStr(MyRange, Chr(10)) Then MyRange = Replace(MyRange, Chr(10), "") End If Next MyRange End With Next ws Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic End Sub
Public Function GetSheetNames(ByVal wbk As workbook) As String() Dim names() As String Dim count As Integer Dim i As Integer count = wbk.Worksheets.count ReDim names(count - 1) For i = 1 To wbk.Worksheets.count names(i - 1) = wbk.Worksheets(i).Name Next GetSheetNames = names End Function
用法: GetSheetNames(Application.ActiveWorkbook)
更新:仅对于选定的工作表:
Public Function GetActiveSheetNames(ByVal wbk As workbook) As String() Dim names() As String Dim count As Integer Dim i As Integer count = wbk.Windows(1).SelectedSheets.count ReDim names(count - 1) For i = 1 To wbk.Windows(1).SelectedSheets.count names(i - 1) = wbk.Windows(1).SelectedSheets(i).Name Next GetActiveSheetNames = names End Function
- 使用VBAreplaceOLEDB连接中的多个命令文本variables与单元格值
- 处理Excel文件
- 是否有一个函数,当inputref是空的时候会返回“”,如果不是,那么它的内容呢?
- SSIS导入Exceldate错误(截断错误)
- 用INDEX公式定义一个子范围的问题
- 用空白replace列中的所有数字除了特定的词
- 在excel-spreadsheet-rows中循环,直到在powerpoint中使用VBA-macro为空。 对于每一行读取值并写入2-dim-array。 不,请select
- 如何插入一个macros(我做)在1000个不同的Excel中没有这个macros
- IsEmpty + Deletefunction让我困惑……设置一个值