【问题标题】:How do i take a Value from a Cell and use it to complete a Macro?如何从单元格中获取值并使用它来完成宏?
【发布时间】: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 范围

标签: excel vba


【解决方案1】:

扩展西蒙的评论:

Dim ws1 As Worksheet, ws3 As Worksheet, wb As Workbook, addr

Set wb = ThisWorkbook                'the workbook where this code is running
Set ws1 = wb.Worksheets("Sheet1")    'copying from here
Set ws3 = wb.Worksheets("Sheet 3")   '...to here

addr = wb.Worksheets("worksheet").Range("A12").Value
ws1.Range(addr).Copy ws3.Range("E11")

【讨论】:

  • 好的,我把这些放在一起并找出了我的 1 个错误,那就是我忽略了将工作表 1 和工作表 3 更改为正确的名称,但是当我发现这个错误时,我仍然得到对象“_Worksheet”的运行时错误“1004”方法“范围”失败
  • 总代码如下:
  • 添加代码时,您应该编辑您的问题并将其添加到此处 - 在评论中难以阅读。
  • 我已将最后一行分成两行 - 哪一行会产生错误?
  • 这是代码的最后一行,它仍然给我一个 1004 Error Method Range of object '_Worksheet' failed。感谢您为此提供的所有帮助。
猜你喜欢
  • 2014-10-23
  • 1970-01-01
  • 2018-02-10
  • 2019-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多