【发布时间】:2022-01-27 10:50:47
【问题描述】:
我对 VBA 的了解与您一样环保。简而言之,我每个月都会运行一份报告,显示我为我的工作打开的文件。我一直在自己做这一切,我正在尝试自动化我对列表所做的一些排序和清理工作。我们有 3 张纸。
工作表 1:RAW 信息(列出了我系统中所有打开的文件。我们每个月都会运行此文件,以确保我们不会丢失任何与我们联系的人。
工作表 2:这实际上是具有我的大部分条件格式、下拉列表等的工作表。
工作表 3:包含所有已清理数据的“最终工作表”。这本工作簿正是一本工作簿。解决此问题后,我计划执行以下操作:
复制到另一个包含我们所有其他月度报告的工作簿。我打算有一个可以打开“主”工作簿的cutton,添加一个新选项卡,让我为该选项卡命名,然后复制我刚刚清理的数据。添加我们已经存在的条件格式(因此条件格式最终将移至该工作簿)。
所以,回到我遇到问题的地方;我想把我创建的输入框,在输入用户数据后,把那个数据变成宏的一部分,但是我不知道怎么做。
例如,当用户输入框弹出时,我可以输入 ("A1:E20"),这将出现在 Sheet 2 (Worksheet) 的标题下。但我随后希望将 ("A1:E30") 的数据复制到正确位置的工作表 3(已完成)(在本例中从 ("E11") 开始。
我想弄清楚的是,如果我在输入框中键入 ("A1:E30"),并将其放在工作表 2 中的单元格 A12 中,那么获取参数的下一部分是什么("A1 :E30") 从单元格 A12 进入
我刚刚将单元格 A12 从 Worksheet 复制到 Worksheet Finished E11 的最后一个代码是相同的(“A1:E30”),而不是转到 Sheet 1(RAW Data)并复制单元格 A1:E30 并在 Finished 中启动它单元格 E11 处的工作表。
我希望这是有道理的,我只是磕磕绊绊,感觉自己像个傻瓜。
这是我认为最糟糕和最笨拙的代码。
Sub TEST_Module()
Dim rng As Range
Dim myResponse As String
myResponse = InputBox("Enter Range Here", " Final Copy Range")
Worksheets("Worksheet").Range("A12").Value = myResponse
MsgBox ("Copying" & myResponse)
【问题讨论】:
-
MyResponse是您的代码放在A12中的字符串。问题是什么?我不知道你到底想完成什么。 -
我正在尝试获取 A12 工作表中的值,然后将其传递给完成工作表上控制的宏,以复制 A12 中列出的实际单元格。
-
假设您确实输入了“A1:E30” - 哪个工作表包含该范围,以及该范围内的单元格究竟会发生什么?
Set rng = Worksheets("Worksheet").Range(myResponse)会创建一个指向指定范围的Range对象,但不清楚你想用它做什么。 -
好的,让我试着改写一下,因为我是新手,很沮丧。
-
好的,让我重试一下。我在这本工作簿中有 3 张工作表。表 1 是我对我想做的所有数据进行清理的地方。表 2 只是工作表,是我正在修补的零碎物品,除了我想使用输入框将清理后的数据从表 1 复制到表 3 的 5 个单元格。我将使用相同的每个月形成相同的报告。尽量不用担心每个月都会更改 VBA 范围