Excel 为什么没有边界?
我像这样理解我的代码Excel 为什么没有边界?,excel,vba,border,Excel,Vba,Border,我像这样理解我的代码 rng2被分配到活动表上的范围“D:E”。只要没有空白单元格出现,所有单元格都计数为rng2(结束(xlUp)) 对于rng2,我将上述设置分配给我的范围rng2,这些设置是有效的左排列,边界应在连续的Syle框架中,我的rng2-这不起作用 我必须说,D:E的第一个单元格在D1(头)中包含一个值,但在E1(无头)中不包含该值,这是问题所在吗 编辑17.05.21完整代码 Dim rng2 As Range: Set rng2 = ActiveSheet.Range(&
- rng2被分配到活动表上的范围“D:E”。只要没有空白单元格出现,所有单元格都计数为rng2(结束(xlUp))
- 对于rng2,我将上述设置分配给我的范围rng2,这些设置是有效的左排列,边界应在连续的Syle框架中,我的rng2-这不起作用
Dim rng2 As Range:
Set rng2 = ActiveSheet.Range("D:E", ActiveSheet.Cells.End(xlUp))
With rng2
.HorizontalAlignment = xlLeft
.Borders.LineStyle = xlContinous
End With
更好的方法应该是这样的:
Sub Duplicate()
Dim nA As Long, nD As Long, i As Long, rc As Long
Dim s As String, j As Long
Range("A:A").Copy Range("D1")
Range("B1").Copy Range("E1")
Range("D:D").RemoveDuplicates Columns:=1, Header:=xlYes
rc = Rows.Count
nA = Cells(rc, 2).End(xlUp).Row
nD = Cells(rc, 4).End(xlUp).Row
For i = 2 To nD
v = Cells(i, 4)
V2 = ""
For j = 2 To nA
If v = Cells(j, 1) Then
V2 = V2 & Cells(j, 2) & ","
End If
Next j
Cells(i, 5) = Mid(V2, 1)
Next i
'neu
Dim rng2 As Range
Dim lastrow As Long
lastrow = ActiveSheet.UsedRange.Rows.Count
Set rng2 = ActiveSheet.Range("D1", "E" & lastrow)
With rng2
.HorizontalAlignment = xlLeft
.Borders.LineStyle = xlContinuous
End With
Debug.Print
End Sub
另外,你的代码有一个输入错误
Dim rng2 As Range
dim lastrow as long
lastrow = ActiveSheet.UsedRange.Rows.Count
Set rng2 = ActiveSheet.Range("D1", "E" & lastrow)
With rng2
.HorizontalAlignment = xlLeft
.Borders.LineStyle = xlContinuous
End With
继续针对边界问题对您的行进行排序。假设有两个列的行值不同。F列有8行,H列有5行:
为了获得不同行的lastrow,可以使用以下代码:
xlContinous should be xlContinuous
因此,lastrowCola的debug.print为8,而lastrowColb为5。根据您的情景,您可以进行相应的调整。哇,好极了使用显式
选项
,节省您的时间!我建议始终激活Option Explicit
:在VBA编辑器中,转到工具›选项›。是的,这是自我第一天学习VBA以来的默认设置,建议大家都这样做。@kin Siang谢谢:)我刚刚复制了你的代码,我有边界,但我得到的边界远远超出了rng2…我有一个有用的边界直到第6行,边界直到第34行…有什么意义吗。。我的声明确实被取消了…我没有考虑它,因为它是另一个圈。如果你的usedrange.row是6,那么它不太可能发生,但是直到第34行的边界。您可以使用步骤检查变量的值是否正确。或者您可以共享图片中的示例数据,以便我更好地了解结果。请尝试used debug.print以查看usedrange的值,可能您使用的是空行
Sub t()
Dim lastrowCola As Long
Dim lastrowColb As Long
lastrowCola = Sheet1.Range("F1").End(xlDown).Row
Debug.Print lastrowCola
lastrowColb = Sheet1.Range("H1").End(xlDown).Row
Debug.Print lastrowColb
End Sub