2014-09-24 87 views
-3

我正在处理某些用于Excel的VBA脚本,并且遇到了一些麻烦。我试图让用户选择一组列以concatonate。因此,我将在循环中使用Application.InputBox将列标题存储为范围,然后采用该范围来格式化concatonate()公式。vba Excel在用户输入时执行操作

例如:用户想要concutonate列d,e,a的内容(以该顺序)。 InputBox将继续出现,直到用户单击cancel,将范围(列标题,例如d1,e1,a1)存储在可以构建concatonate语句的数组中。

我已经花了一些时间与此并且难住。我的第一个障碍是,我似乎无法得到一个while循环,当InputBox返回false(用户按下“cancel”)时结束。

任何帮助将非常感激。有一个基于C的背景,我真的VBA挣扎......

+0

做一些努力/显示你的代码 – george 2014-09-24 14:36:01

+0

我的道歉缺乏代码。有几种方法我试图做到这一点: – Doodereeno66 2014-09-25 14:19:27

+0

我对缺少代码表示歉意。在发布之前,我确实给了它一些时间 - 我应该分享我的代码。我会在将来的帖子中留意以表明我的努力。感谢您的领导! – Doodereeno66 2014-09-25 14:25:03

回答

1

即使你没有提供任何代码尝试这样做...

Dim concatCells() 
Dim i As Integer 
i = 0 

msgselect = MsgBox("Please select the cell you wish to concatenate.", vbOKCancel) 

Do While msgselect = vbOK 
    i = i + 1 
    ReDim Preserve concatCells(i) 
    concatCells(i - 1) = Application.InputBox("select cell", Type:=8) 
    msgselect = MsgBox("Please select the cell you wish to concatenate.", vbOKCancel) 
Loop 

Dim rangeToConcat As String 
For i = 0 To UBound(concatCells) 
    rangeToConcat = rangeToConcat & concatCells(i) 
Next i 
Range("A1").Formula = rangeToConcat 
+0

如果你想要它做完整的列,你需要嵌套for循环,我有另一个从第1行开始到最后使用的行。 – 2014-09-24 19:42:15

+0

完美 - 谢谢。对于缺少代码再次抱歉。感谢帮助。 – Doodereeno66 2014-09-25 14:28:51

+0

请标记为已解决;-) – 2014-09-25 14:37:49