2014-08-28 97 views
-3

我想知道在VBA中是否有一种方法可以打开填充的Excel电子表格并允许用户选择包含要提取的数据的特定单元格在一系列文件中,然后将选定的单元格传递回该程序,以便它可以遍历指定文件夹中的100个文件并提取所需的数据。通过在excel电子表格中选择用户输入

我不想让别人为我写代码(虽然当然实例很棒)我只是不太确定如何去手动选择数据并将其传递回程序。我已经有了代码运行的功能,可以通过100个文件顺序提取数据,并将其放在另一个工作表所需的位置。我需要手动选择,因为每个文件夹(用户选择)中的文件中的数据位置可能会有很大差异。现在我必须明确地在数据的位置进行编程,但是我们有100个报告文件,每个报告文件在每个布局中都有不同的布局,因此在数据位置手动编程效率极低。

想法??

+0

@me去如何 - 请解释一下,因为我已经查阅了“怎么问”页面,看不出哪里有问题。我问了一个问题,这个问题解释了我正面临的问题以及我希望以我想要的输入和输出的大致轮廓进行的方向。我没有包括代码,因为我正在寻找这个特定问题的起点,因此我不希望有人为我提供代码,而是根据比我自己更好的经验提供帮助。下面是 – dhnobles 2014-08-28 17:20:32

+0

的好答案。你的更大的问题是验证用户选择什么,以确保它符合必要的标准,并在尝试运行任何其他代码之前这样做。当你到达那一点时,那将是创建另一个问题的好时机,并遵循“如何问问”的指导方针。即您尝试过什么,您拥有哪些代码,您要遵循的规则是什么,预期的结果以及代码出现问题的位置。 **欢迎来到SO!** – guitarthrower 2014-08-28 18:01:51

回答

1

我会

Sub SelectRange() 

    Dim selRng As Range 
    Set selRng = Application.InputBox(Prompt:="Select Range", Title:="", Type:=8) 

    MsgBox selRng.Address 
End Sub 
+0

这肯定是一个更紧凑的解决方案。我很欣赏有关继续前进方向的帮助。 – dhnobles 2014-08-28 17:26:11

+0

+1。就像没有复杂开销的RefEdit一样。 – 2014-08-28 17:28:53

1

您可以在UserForm上使用RefEdit控件。我认为RefEdit不是默认启用的控件,因此您可能需要右键单击工具箱并从“其他控件”中启用它,一旦您完成该操作,您应该在工具箱中看到它:

enter image description here

如果您希望其他人使用此宏,则可能需要在其计算机上启用该功能,或将该宏作为XLAM加载项的一部分进行分发,否则可能无法工作。

enter image description here

RefEdit控件允许用户选择范围内输入:

enter image description here

的控制将有像RefEdit1一个名字(你可以换到其他的VB的东西VBE的属性窗格),并访问您想要的值:

MsgBox UserForm2.RefEdit1.Value 

既然您已经在选定范围的.Address上有句柄,您可以将它传递给其他程序/等。

+0

太棒了!感谢您的指导!我会尽力回复我在未来帮助其他人的想法。 – dhnobles 2014-08-28 17:07:02

+0

++,但这不是太复杂吗? – 2014-08-28 17:24:32

+0

ahhh是@mehow我忘记了'InputBox'方法。我在Excel中做的不多:) – 2014-08-28 17:28:04