【发布时间】:2012-11-17 01:47:40
【问题描述】:
更新代码和问题: 该工作表模块中的当前代码如下:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("B2:B2")) Is Nothing Then
Application.Run "MonthlyRead"
End If
End Sub
Sub MPrintAll()
Dim c As String
Dim MonthlyList As Range
Set MonthlyList = Worksheets("Monthly").Range("MonthlyList").Cells
For Each cell In MonthlyList
Range("b2").Value = cell.Value
ActiveWorkbook.Worksheets("Monthly").PrintOut
Next cell
End Sub
我一直在单步执行代码,试图找出问题所在。当我在 "Range("b2").Value = cell.Value" 之后按 F8 时,它会立即转到工作表的第一行代码,完全跳过打印命令。此外,它会删除命名范围中的第一个值,而不是将其复制粘贴到单元格 B2。
作为参考,下面是上面第一个例程调用的 Module1 中的代码:
Sub MonthlyRead()
Call MEFTPS
Call MUCT6
End Sub
Sub MEFTPS()
If Range("a2").Value = "EFTPS Package" Then
Call MShow
Else: Call MHide
End If
End Sub
Sub MHide()
Rows("20:20").Select
Selection.EntireRow.Hidden = True
Rows("31:31").Select
Selection.EntireRow.Hidden = True
Rows("42:42").Select
Selection.EntireRow.Hidden = True
Rows("53:53").Select
Selection.EntireRow.Hidden = True
Range("B2").Select
End Sub
Sub MShow()
Rows("20:20").Select
Selection.EntireRow.Hidden = False
Rows("31:31").Select
Selection.EntireRow.Hidden = False
Rows("42:42").Select
Selection.EntireRow.Hidden = False
Rows("53:53").Select
Selection.EntireRow.Hidden = False
Range("B2").Select
End Sub
Sub MUCT6()
If Range("g3").Value = "Y" Then
Call UCT6MShow
Else: Call UCT6MHide
End If
End Sub
Sub UCT6MHide()
Rows("19:19").Select
Selection.EntireRow.Hidden = True
Rows("30:30").Select
Selection.EntireRow.Hidden = True
Rows("41:41").Select
Selection.EntireRow.Hidden = True
Rows("52:52").Select
Selection.EntireRow.Hidden = True
Range("B2").Select
End Sub
Sub UCT6MShow()
Rows("19:19").Select
Selection.EntireRow.Hidden = False
Rows("30:30").Select
Selection.EntireRow.Hidden = False
Rows("41:41").Select
Selection.EntireRow.Hidden = False
Rows("52:52").Select
Selection.EntireRow.Hidden = False
Range("B2").Select
End Sub
我正在使用一个动态工作表,该工作表根据页面顶部的数据验证下拉列表中的选择来填充个性化的付款计划。下拉列表中有大约 300 个选项。然后打印这些时间表,以验证从其他 2 个程序获得的信息,所有这些程序都必须在一天内打印、复印、扫描、打包和邮寄。
我正在寻找可以从下拉列表中按顺序从列表的开头到结尾选择每个客户端名称的 VBA 代码。该列表是从另一个工作表上的命名范围填充的,名为“QtrlyList”。
我有一些非常简单的代码,但不起作用。
Sub PrintAll()
For Each cell In QtrlyList
Worksheets("Normal").PrintOut
Next cell
End Sub
每当我尝试运行代码时,都会收到“类型不匹配”错误。我相当肯定这是来自“cell”或“QtrlyList”。我只是不确定如何解决它。
【问题讨论】:
-
是什么样的下拉菜单?
-
这是一个数据验证下拉菜单,由命名范围填充。
-
这就是你的全部代码吗?如果您正在浏览命名范围内的单元格,我相信您需要
Range("QtrlyList")作为初学者。 -
我是 VBA 新手。我通常可以使用 google-fu 查找代码的 sn-ps 来拼凑,但这次不行。当我将“In QtrlyList”更改为“In Range(“QtrlyList”) 时,我收到错误 400。如果我单步执行代码,我会收到“运行时错误'1004':应用程序定义或对象定义错误”第二行代码。
-
我已经得到了一些功能。现在,问题似乎是在 VBA 发送打印命令之前让选择显示在单元格 B2 中。