Excel 创建一个按钮,用于为新工作表生成指定列
上周我刚刚发布了一个问题。问题是如何在列表中找到丢失的单元格。这是帖子链接 基于前面的问题,我想添加一些新功能。 红色列为必填字段,绿色列为可选字段。 我想添加一个新列并创建一个按钮,该按钮可以将所有必填字段生成到新工作表中。 如您所见,创建了一个新列和一个新按钮。 现在,我想使用“生成按钮”将所有必填(红色)字段生成到一个新的工作表调用“重要”中。然而,我有一个条件依赖于列K来决定我将生成哪一行数据。如果第K列为是,则它将生成该行数据。如果第K列为否,则我将不会将该行生成到新工作表 我的问题是如何生成新的工作表,并在第K列中使用是或否条件将这些必填字段提取到新工作表中 多谢各位 这是我的代码:Excel 创建一个按钮,用于为新工作表生成指定列,excel,vba,Excel,Vba,上周我刚刚发布了一个问题。问题是如何在列表中找到丢失的单元格。这是帖子链接 基于前面的问题,我想添加一些新功能。 红色列为必填字段,绿色列为可选字段。 我想添加一个新列并创建一个按钮,该按钮可以将所有必填字段生成到新工作表中。 如您所见,创建了一个新列和一个新按钮。 现在,我想使用“生成按钮”将所有必填(红色)字段生成到一个新的工作表调用“重要”中。然而,我有一个条件依赖于列K来决定我将生成哪一行数据。如果第K列为是,则它将生成该行数据。如果第K列为否,则我将不会将该行生成到新工作表 我的问题
Private Sub CommandButton2_Click()
Dim rng As Range
Dim selected As Range
Dim newws As Worksheet
Dim yesno As Range
Dim lastrow As Long
Dim justify As Boolean
lastrow = Range("B3").End(xlDown).Row
Set rng = Range("B3:J" & lastrow)
Set yesno = Range("K3:K" & lastrow)
Worksheets("Important").Add after:=Sheets(Worksheets.Count)
Set wks = ActiveSheet
For Each selected In rng
If rng.Cells.Value = "Yes" Then
justify = True
Worksheets("Important").Copy
Else
If rng.Cells.Value = "No" Then
justify = False
Set newws = Nothing
End If
End If
Next
End Sub
有几件事:
应该是在yesno
not rng中选择的每个循环的
范围(源)。复制范围(目标)
Private Sub CommandButton2_Click()
Dim rng As Range
Dim ss As Range, cel As Range
Dim yesno As Range
Dim lastrow As Long
Dim justify As Boolean
Dim tws As Worksheet
Dim tlr&, i&
Set wks = Sheets("Sheet1") 'Change this to the worksheet with the data
With wks
lastrow = .Range("B3").End(xlDown).Row
Set yesno = .Range("K3:K" & lastrow)
Set tws = Worksheets.Add(after:=Sheets(Worksheets.Count))
tws.Name = ("Important")
Set rng = Union(.Range("B3"), .Range("D3"), .Range("E3"), .Range("H3"), .Range("I3"))
rng.Copy tws.Range("B1")
For Each ss In yesno
If LCase(ss.Value) = "yes" Then
'set rng to the 5 cells desired.
Set rng = Union(.Range("B" & ss.Row), .Range("D" & ss.Row), .Range("E" & ss.Row), .Range("H" & ss.Row), .Range("I" & ss.Row))
tlr = tws.Range("B" & tws.Rows.Count).End(xlUp).Offset(1).Row 'find next empty row on target sheet
rng.Copy tws.Cells(tlr, "B") 'Change to starting column desired.
justify = True 'not sure what this is for.
ElseIf LCase(ss.Value) = "no" Then
justify = False 'not sure what this is for.
End If
Next
End With
End Sub
我将选择的
更改为ss
,只是为了避开选择
,因此我不需要输入太多
我还声明rng
为需要复制的单元格
编辑以添加标题Hi scott我已经尝试了代码它可以生成新的工作表,但在新的工作表中它是空的如果我也要复制标题怎么办?发生了两种情况之一。运行宏时,包含数据的页面不是活动页面,或者K列中没有与大写字母Y拼写完全相同的“是”。我稍微更改了代码,让我们尝试直接命名工作表。有一个地方,你将需要提供一个实际的表名,我已经评论在哪里。试试看。我试过代码,它只生成最后一行数据,我花了大约一个小时,但仍然不知道如何解决:(@NicholasAggerLui)给我发电子邮件给工作簿,我会看的。scott。craner@gmail.com