[英]Removing the border lines in a worksheet when code has been run
我有一个代码,可以成功地查看外部文件并将包含特定条件的行复制/粘贴到当前工作簿中。 例如,我正在名为Active master project file的外部工作簿中搜索Singapore
,并将包含Singapore
所有行复制到当前打开的工作簿中。
发生的问题是,当我两次运行相同的代码时,工作表的最后一行将存在一条边框线。 例如,当我运行代码时,它将把包含Singapore
的信息复制粘贴到当前工作表中,称为“新的即将来临的项目”:
但是,当我再次运行代码时,它将在每列上创建一条边界线,如下图所示:
我现在拥有的代码是:
Sub UpdateNewUpcomingProj()
Dim wb1 As Workbook, wb2 As Workbook
Dim ws1 As Worksheet, ws2 As Worksheet
Dim copyFrom As Range
Dim lRow As Long '<~~ Not Integer. Might give you error in higher versions of excel
Dim strSearch As String
Set wb1 = Application.Workbooks.Open("U:\Active Master Project.xlsm")
Set ws1 = wb1.Worksheets("New Upcoming Projects")
strSearch = "Singapore"
With ws1
'~~> Remove any filters
.AutoFilterMode = False
'~~> I am assuming that the names are in Col A
'~~> if not then change A below to whatever column letter
lRow = .Range("A" & .Rows.Count).End(xlUp).Row
With .Range("A1:A" & lRow)
.AutoFilter Field:=1, Criteria1:="=*" & strSearch & "*"
Set copyFrom = .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow
End With
.AutoFilterMode = False
End With
'~~> Destination File
Set wb2 = ThisWorkbook
Set ws2 = wb2.Worksheets("New Upcoming Projects")
With ws2
If Application.WorksheetFunction.CountA(.Cells) <> 0 Then
lRow = .Cells.Find(What:="*", _
After:=.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
Else
lRow = 2
End If
copyFrom.Copy .Rows(lRow)
.Rows.RemoveDuplicates Array(2), xlNo
End With
End Sub
我是否需要添加任何改进或其他代码以使边界线消失?
正如EyePeaSea所说,您可以通过vba代码删除边框,例如
ThisWorkbook.Worksheets("XY").Range("A1", "Z99").Borders.LineStyle = xlNone
在您的情况下,代码应(未试用)
copyFrom.Borders.LineStyle = xlNone
复制行之后
我认为这种格式来自源工作表。 如果是这样,则可以使用PasteSpecial
粘贴值,并保持目标格式。 为此,只需更换
copyFrom.Copy .Rows(lRow)
与
copyFrom.Copy
.Rows(lRow).PasteSpecial xlPasteValues, xlPasteSpecialOperationNone, False, False
如果确实需要从源工作表进行某种格式设置,则可以使用xlPasteAllExceptBorders
代替xlPasteValues
。
选择性粘贴,它将粘贴到列A中的第一个空单元格
copyfrom.Copy
ws2.Cells(ws2.Rows.Count, "A").End(xlUp).Offset(1).PasteSpecial xlPasteValues
Application.CutCopyMode = 0
您可以在删除重复项后添加此行
.UsedRange.Offset(lRow).Borders.Value = 0
这将从插入的行中删除所有边框
ps:我仍然不明白这些边界的来源,最有可能是来自原始工作表的.. :)
在代码末尾,请添加新行以格式化第三行的绘画。
所以基本上在最后两行wb1.Select'之前,请确保在此处选择正确的wb1或wb2,然后重试Rows(“ 3:3”)。Select Selection.Copy Rows(“ 4:10000”)。Select Selection .PasteSpecial Paste:= xlPasteFormats,Operation:= xlNone,_ SkipBlanks:= False,Transpose:= False Application.CutCopyMode = False结尾为end sub'这是代码的最后一行
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.