我下面的代码做了一些事情,要求一个新工作表的名称,创建它,并将名称输入到下一个空白的C单元格。
旁边的单元格D、E、F和G具有相关数据,这些数据是在创建EG时从新工作表中调用的。项目经理、开始日期等
我认为最好是在创建新项目时这样做,而不是将这些都填充进去,并在每个地方都有一个丑陋的“#Ref!”表。
基本上,根据下面使用的“EMRange”,例如下一个空的是C6,我想D 6,E6,F6和G6自动填充上面单元格的公式。
我想我需要使用selection.autofill,但是我不确定如何将目标设置为这些特定的单元格,这取决于前面脚本部分中的EMRange。
Public Sub CopySheetAndRenameByCell()
Dim newName As String, Emrange As Range, wsNew As Worksheet, wb As Workbook
Dim wsIndex As Worksheet
newName = InputBox("Enter the name of the new project", _
"Copy worksheet", ActiveCell.Value)
If newName <> "" Then
Set wb = ThisWorkbook
wb.Worksheets("Project Sheet BLANK").Copy _
After:=wb.Worksheets(wb.Worksheets.Count)
Set wsNew = wb.Worksheets(wb.Worksheets.Count)
On Error Resume Next 'ignore error on rename
wsNew.Name = newName
On Error GoTo 0 'stop ignoring errors
Set wsIndex = wb.Worksheets("Client Projects Overview")
Set Emrange = wsIndex.Range("C" & Rows.Count).End(xlUp).Offset(1)
wsIndex.Hyperlinks.Add Anchor:=Emrange, _
Address:="", SubAddress:="'" & wsNew.Name & "'!A1", _
TextToDisplay:=wsNew.Name
'reset font style
Emrange.Font.Underline = xlUnderlineStyleNone
Emrange.Font.ColorIndex = xlAutomatic
Emrange.Font.Name = "Century Gothic"
Emrange.Font.Size = "10"
If wsNew.Name <> newName Then 'in case sheet could not be renamed....
MsgBox "Name provided '" & newName & _
"' is not valid as a worksheet name!", vbExclamation
End If
End If
End Sub
1条答案
按热度按时间rkkpypqq1#
只是在我的公式中添加了一个if语句,并自动填充到所有单元格中,而不是在vba中逐个进行填充。
最后变成这样: