所以这是一个与其他人一样的大项目的问题。
我现在只是整理一些格式,本质上是想要一个子程序(我可以从另一个子程序中调用),该子程序将自动在发布到工作表的新数据周围添加所需的边框。
我记录了添加边框的宏(并将范围更改为可变的行-RowToPasteTo),并且一切正常。
我试图从另一段代码中调用它,但它却一团糟,现在给我一个错误:
Run-Time error '1004':
Unable to set the LineStyle Property of the Borders class
正如错误所提到的,.LineStyle
似乎是一个错误,但是我使用的是与他们的录音机给我的风格相同的风格。
我如何才能再次使它正常工作,从而完成所有边界?
编辑:忘记添加代码-对不起!
Sub Borders()
Dim RowToPasteTo As Long
With Sheets(4)
RowToPasteTo = .Cells(.Rows.Count, "B").End(xlUp).Row + 1
Range("B" & RowToPasteTo & ":" & "Z" & RowToPasteTo).Select
With Selection.Borders
.LineStyle = xlContinuous
.ThemeColor = 3
.TintAndShade = -9.99786370433668E-02
.Weight = xlThin
End With
End With
End Sub
编辑2:这段代码是在将每行新数据移动到此工作表时插入边框(网格标记已关闭,因为仅在带有数据的行上显示边框。
到目前为止,我已经尝试了所有建议的修订,并且仅运行上述代码时仍然收到错误。
我现在还创建了一张空白纸(并相应地调整了纸页编号),在那里我收到了另一个错误。
(最小化)代码,稍后将如下所示调用此代码段:
Sub ToTank()
Dim RowToPasteTo As Long
RowToPasteTo = .Cells(.Rows.Count, "B").End(xlUp).Row + 1
Sheets(4).Unprotect
.Range("A" & RowToPasteTo & ":" & "Z" & RowToPasteTo).Locked = False
Call Borders()
End Sub
答案 0 :(得分:1)
如上所述,.Borders
至少需要1个自变量才能起作用。一种实现您要完成的任务的方法是:
Sub Borders()
Dim RowToPasteTo As Long
With Sheets(4)
RowToPasteTo = .Cells(.Rows.Count, "B").End(xlUp).Row + 1
For X = 1 To 4
With .Range("B" & RowToPasteTo & ":" & "Z" & RowToPasteTo).Borders(X)
.LineStyle = xlContinuous
.ColorIndex = 3
.Weight = xlThin
End With
Next X
End With
End Sub
按照@Damian的评论,更正,尽管以上内容也非常有用:
Sub Borders()
Dim RowToPasteTo As Long
With Sheets("Sheet1")
RowToPasteTo = .Cells(.Rows.Count, "B").End(xlUp).Row + 1
With .Range("B" & RowToPasteTo & ":" & "Z" & RowToPasteTo).Borders
.LineStyle = xlContinuous
.ColorIndex = 3
.Weight = xlThin
End With
End With
End Sub
有关更多详细信息,请参见Borders。
答案 1 :(得分:1)
我认为主子边界中发生了一些事情。为了避免此类问题,您需要完全限定所有范围,另一种方法是:
Option Explicit
Sub ToTank()
Dim RowToPasteTo As Long
With ThisWorkbook.Sheets(4) 'If the code runs for the same workbook the code is in
RowToPasteTo = .Cells(.Rows.Count, "B").End(xlUp).Row + 1
.Unprotect
Borders .Range("B" & RowToPasteTo & ":" & "Z" & RowToPasteTo) 'call the procedure inserting the borders passing the range you need
End With
End Sub
Sub Borders(MyRange As Range)
With MyRange.Borders
.LineStyle = xlContinuous
.ThemeColor = 3
.TintAndShade = -9.99786370433668E-02
.Weight = xlThin
End With
End Sub
通过这种方式,您始终可以调用Borders
子项,而无需进行任何修改即可给出所需的范围。您还可以通过传递更多参数来使变量成为LineStyle
和所需的所有属性。