Excel的VBA - 添加新的列包含文本和格式到多个工作表(Excel VBA - Add ne

2019-09-26 12:42发布

我工作的一个Excel宏(按钮),将增加一列到多个工作表的相同点。 此外,该列必须有列标题是通过对话框输入。

每个工作表中包含格式完全相同的方式表 - 唯一的区别是工作表的名称。

这是我到目前为止有:

Sub CommandButton2_Click()

Sheets(Array("Sheet1", "Sheet2")).Select
Sheets("Sheet2").Activate
Columns("F:F").Select
Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromRightOrBelow

Dim myValue As Variant

myValue = InputBox("Enter Thought Leadership Title", "New Thought    Leadership", "XXXXX")

Sheets(Array("Sheet1", "Sheet2”)).Select
Range("F5").Value = myValue

End Sub

这已经得到了我正是我想要的“工作表Sheet1” - 将一列(F)和输入,同时立即从列复制格式的权利,通过对话框中指定单元格F5头名。 然而,它的作用为Sheet2的(和所有其他人,但把他们赶走了简洁)是添加一列不复制从正确的格式或添加通过对话框中指定的文本。

初学VBA“程序员”和已经远远经过这里使用的论坛得到了这一点。

但愿我是清楚的 - 感谢任何输入。

Answer 1:

仅通过循环Array("Sheet1", "Sheet2") 添加Type:=2参数到的InputBox将确保myValue将永远是一个字符串。 如果用户取消的InputBox然后myValue = ""

Sub CommandButton2_Click()
    Dim ws
    Dim myValue As Variant

    myValue = Application.InputBox(Prompt:="Enter Thought Leadership Title", Title:="New Thought    Leadership", Default:="XXXXX", Type:=2)

    If myValue <> "" Then
        For Each ws In Array("Sheet1", "Sheet2")
            With ws
                .Columns("F:F").Insert Shift:=xlToRight
                .Range("F5").Value = myValue
            End With
        Next
    End If

End Sub


Answer 2:

到@ThomasInzina另一种方法是这样的:

Sub commandButton2_Click_Test()
Dim myValue As Variant

For Each Worksheet In ActiveWorkbook.Worksheets
    With Worksheet
        .Range("F:F").EntireColumn.Insert shift:=xlToRight, copyOrigin:=xlFormatFromRightOrBelow
        myValue = InputBox("Enter Thought Leadership Title", "New Thought    Leadership", "XXXXX")

    End With
Next Worksheet
Worksheets("Sheet1").Range("F5").Value = myValue ' I'm not sure where you wanted this,
Worksheets("Sheet2").Range("F5").Value = myvalue ' or what it does, so tweak as necessary.
End Sub

我试图保持它类似于你的代码成为可能,同时避免.Select (如下OP我的评论中提到)。

注:通过您的工作簿中所有工作表这将循环。 您可以添加一行If worksheet.name = "Sheet1" or worksheet.name = "Sheet2"只在那些运行它。



文章来源: Excel VBA - Add new columns with text and formatting to multiple worksheets