英文:
Excel Macro Border Issue
问题
我有一个看起来很简单的要求,需要在Excel宏中添加一个功能,但是我无论如何都无法使其工作。我想在这个边框宏中添加一个额外的循环,用于为财务小计添加双下边框和单上边框。有人可以帮我将其添加到这个循环中吗?
谢谢!
Sub CycleBd()
With Selection
If .Borders.LineStyle = xlNone Then
.Borders(xlEdgeBottom).Weight = xlThin
ElseIf .Borders(xlEdgeBottom).Weight = xlThin And _
.Borders(xlEdgeTop).LineStyle = xlNone Then
.Borders.Weight = xlThin
ElseIf .Borders.Weight = xlThin Then
.Borders.LineStyle = xlNone '清除所有边框
.BorderAround colorIndex:=xlAutomatic, Weight:=xlThick
Else
.Borders.LineStyle = xlNone '清除所有边框
End If
End With
End Sub
我尝试的每一种方法都没有结果,并且默认情况下会清除边框。
英文:
I have what seems to be a simple addition to an excel macro, but I can't get it to work to save my life. I'd like to add one additional cycle to this borders macro that adds a double bottom border and a single top border for financial subtotals. Can anyone help me add it as rotation in this cycle?
Thank you!
Sub CycleBd()
With Selection
If .Borders.LineStyle = xlNone Then
.Borders(xlEdgeBottom).Weight = xlThin
ElseIf .Borders(xlEdgeBottom).Weight = xlThin And _
.Borders(xlEdgeTop).LineStyle = xlNone Then
.Borders.Weight = xlThin
ElseIf .Borders.Weight = xlThin Then
.Borders.LineStyle = xlNone 'Clear All
.BorderAround colorIndex:=xlAutomatic, Weight:=xlThick
Else
.Borders.LineStyle = xlNone 'Clear All
End If
End With
End Sub
Every attempt I've tried has no result and it defeaults to clearing borders.
答案1
得分: 1
我相信这是你想要做的事情,添加第四个“cycle”。为了简洁起见,它只检查顶部边框是否为xlThick
,但如果将来添加更多的“cycles”,你可能需要更改这一点。
Sub CycleBd()
With Selection
If .Borders.LineStyle = xlNone Then
.Borders(xlEdgeBottom).Weight = xlThin
ElseIf .Borders(xlEdgeBottom).Weight = xlThin And _
.Borders(xlEdgeTop).LineStyle = xlNone Then
.Borders.Weight = xlThin
ElseIf .Borders.Weight = xlThin Then
.Borders.LineStyle = xlNone 'Clear All
.BorderAround ColorIndex:=xlAutomatic, Weight:=xlThick
ElseIf .Borders(xlEdgeTop).Weight = xlThick Then
.Borders.LineStyle = xlNone 'Clear All
.Borders(xlEdgeBottom).LineStyle = xlDouble
.Borders(xlEdgeTop).Weight = xlThin
Else
.Borders.LineStyle = xlNone 'Clear All
End If
End With
End Sub
我还要补充一点,你可以将这些特定样式添加到快速访问工具栏中,这样你就不必循环遍历它们了。
英文:
I believe this is what you're trying to do, add a 4th 'cycle'. It only checks if the top border is xlThick
for conciseness, but you might need to change that if you add more 'cycles' in the future.
Sub CycleBd()
With Selection
If .Borders.LineStyle = xlNone Then
.Borders(xlEdgeBottom).Weight = xlThin
ElseIf .Borders(xlEdgeBottom).Weight = xlThin And _
.Borders(xlEdgeTop).LineStyle = xlNone Then
.Borders.Weight = xlThin
ElseIf .Borders.Weight = xlThin Then
.Borders.LineStyle = xlNone 'Clear All
.BorderAround ColorIndex:=xlAutomatic, Weight:=xlThick
ElseIf .Borders(xlEdgeTop).Weight = xlThick Then
.Borders.LineStyle = xlNone 'Clear All
.Borders(xlEdgeBottom).LineStyle = xlDouble
.Borders(xlEdgeTop).Weight = xlThin
Else
.Borders.LineStyle = xlNone 'Clear All
End If
End With
End Sub
I'd also add that you can add those specific styles to the quick access toolbar, so you wouldn't have to cycle through them.
答案2
得分: 0
工作表的数据结构不清楚。提供的代码展示了如何在总行的顶部边框上配置双线。
Sub SetBorders()
Dim rng As Range
Set rng = ActiveSheet.UsedRange
rng.Borders.LineStyle = xlNone
rng.Borders.LineStyle = xlContinuous
rng.BorderAround ColorIndex:=xlAutomatic, Weight:=xlThick
rng.Rows(rng.Rows.Count - 1).Borders(xlEdgeBottom).LineStyle = xlDouble
End Sub
英文:
The worksheet data structure is unclear. The provided code shows how to configure a double line on top border of total line.
Sub SetBorders()
Dim rng As Range
Set rng = ActiveSheet.UsedRange
rng.Borders.LineStyle = xlNone
rng.Borders.LineStyle = xlContinuous
rng.BorderAround ColorIndex:=xlAutomatic, Weight:=xlThick
rng.Rows(rng.Rows.Count - 1).Borders(xlEdgeBottom).LineStyle = xlDouble
End Sub
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论