我有一个指定的范围,想要合并每行的单元格A-D。我不确定哪个循环是最好的,并且已经弄乱了不同的循环并且我遇到的问题是对象定义的错误或将整个范围合并到一个单元格中。
Sub Merge()
Dim EndRangeRE As Range
Dim EndRangeNRE As Range
Dim rngall As Range
Dim StartRangeNRE As Range
Dim StartRangeRE As Range
Dim looprng As Range
Sheets("{Activity} 7300-1input template").Activate
Set rngall = Sheets("{Activity} 7300-1input template").UsedRange
Set EndRangeRE = rngall.Find(What:="10. Other Costs", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
Set EndRangeNRE = rngall.Find(What:="Recurring Costs", LookIn:=xlValues,LookAt:=xlWhole, MatchCase:=True)
Set StartRangeNRE = rngall.Find(What:="Non-Recurring Costs",LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
Set StartRangeRE = rngall.Find(What:="Recurring Costs", LookIn:=xlValues,LookAt:=xlWhole, MatchCase:=True)
Set looprng = Sheets("{Activity} 7300-1input template").Range(StartRangeNRE, EndRangeRE)
For Each Row In looprng
Cells(0, 4).Merge
Next Row
End Sub
这个给了我一个错误,我不知道如何指定每行,A:D合并和下一行。它会是一个循环吗?我非常乐意采用最简单的方法来实现这一目标,因此欢迎提出建议(我在编码方面没有太多经验,所以有任何东西可以帮助我学习!)。谢谢!
答案 0 :(得分:2)
这会合并 A 到 D 100行:
Sub ytrewq()
For i = 1 To 100
Range("A" & i & ":D" & i).MergeCells = True
Next i
End Sub
修改#1:强>
Sub ytrewq()
For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row
Range("A" & i & ":D" & i).MergeCells = True
Next i
End Sub
答案 1 :(得分:2)
也许你在此之后:
Option Explicit
Sub Merge()
Dim EndRangeRE As Range, StartRangeNRE As Range
Dim myRow As Range
With Sheets("{Activity} 7300-1input template")
With .UsedRange
Set EndRangeRE = .Find(What:="10. Other Costs", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
Set StartRangeNRE = .Find(What:="Non-Recurring Costs", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
End With
For Each myRow In .Range(StartRangeNRE, EndRangeRE).Rows
.Rows(myRow.row).Resize(, 4).Merge
Next
End With
End Sub
我摆脱了未使用的变量并使用一些With-End With
块来引用同一对象的多个引用
答案 2 :(得分:1)
尝试此代码:
Sub test()
'Get The Last non empty row
lastRow = ThisWorkbook.Sheets("YourSheetName").Cells(Rows.Count, 1).End(xlUp).Row
For i = 1 To lastRow
ThisWorkbook.Sheets("YourSheetName").Range("A" & i & ":D" & i).Merge
Next i
End Sub
答案 3 :(得分:0)
下面的代码包括在列中合并单元格" A:D"在looprng
范围内。
<强>代码强>
Option Explicit
Sub Merge()
Dim EndRangeRE As Range
Dim EndRangeNRE As Range
Dim rngall As Range
Dim StartRangeNRE As Range
Dim StartRangeRE As Range
Dim looprng As Range
' 2 added object variables
Dim Sht As Worksheet
Dim myRow As Range
' set your worksheet object, don't need to Activate it
Set Sht = ThisWorkbook.Sheets("{Activity} 7300-1input template")
Set rngall = Sht.UsedRange
Set EndRangeRE = rngall.Find(What:="10. Other Costs", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
Set EndRangeNRE = rngall.Find(What:="Recurring Costs", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
Set StartRangeNRE = rngall.Find(What:="Non-Recurring Costs", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
Set StartRangeRE = rngall.Find(What:="Recurring Costs", LookIn:=xlValues, LookAt:=xlWhole, MatchCase:=True)
Set looprng = Sht.Range(StartRangeNRE, EndRangeRE)
' merge cells in columns "A:D" in your range
For Each myRow In looprng.Rows
Sht.Range(Sht.Range("A" & myRow.Row), Sht.Range("D" & myRow.Row)).Merge
Next myRow
End Sub