2014-05-20 41 views
-3

我想在Excel中创建一个用户窗体,可以用来选择将用于传递到另一个宏的列。总体而言,我想要一个用户表单,可以从工作表中选择一列/列,然后通过表单中的确定键输入此列,然后在宏中使用该列来比较列。我已经有了一个比较列的宏,但是我想要它,所以用户可以从用户中选择他们想要的列,而不必进入VBA代码。Excel VBA窗体来选择另一个宏的列

是否有用户形式这样做?如果没有,还有没有其他的方式呢?

任何帮助将是伟大的!由于

这是我目前使用我的电子表格中的列比较代码:

Sub IdentifyMatches() 

For X = 2 To 27 
    If ((Cells((X), 2).Value <> Cells((X), 8).Value)) Then 
     Cells((X), 14).Value = "ADDRESS MISMATCH" 
    Else 
     Cells((X), 14).Value = "Address Match" 
    End If 

    If ((Cells((X), 3).Value <> Cells((X), 9).Value)) Then 
     Cells((X), 15).Value = "POSTCODE MISMATCH" 
    Else 
     Cells((X), 15).Value = "Postcode Match" 
    End If 

    If ((Cells((X), 4).Value <> Cells((X), 10).Value)) Then 
     Cells((X), 16).Value = "COVER MISMATCH" 
    Else 
     Cells((X), 16).Value = "Cover Match" 
    End If 

    If ((Cells((X), 5).Value <> Cells((X), 11).Value)) Then 
     Cells((X), 17).Value = "NAME MISMATCH" 
    Else 
     Cells((X), 17).Value = "Name Match" 
    End If 

    If ((Cells((X), 6).Value <> Cells((X), 12).Value)) Then 
     Cells((X), 18).Value = "AGE MISMATCH" 
    Else 
     Cells((X), 18).Value = "Age Match" 
    End If 
Next X 

End Sub 
+1

你可以使用一个输入框,用户输入的范围内的细节和宏内使用该信息 – Gareth

+0

是的,这是最好的选择,通过的建议@Gareth以列名作为输入示例,我是s uggesting采取inputStr =“A”,这个A将通过输入框来。然后你可以通过整数值来迭代它。即A&i,其中i =整数。那么它将变成A1,A2等等。希望这可以帮助你。 – Brain

回答

0

我会使用类似,它允许用户输入列范围如下(假设你想设置范围整列(S):

Dim strRng As String 
Dim rng As Range 

'Prompt the user for a column range 
strRng = InputBox("Please enter the columns", , "e.g. A:B") 

'Set the range to the columns entered 
Set rng = ActiveSheet.Range(strRng) 
+0

嗨,感谢您的帮助。我不认为这是我正在寻找的正确的事情。我有两张工作簿(并且想比较这些列上的某些列)。我已经有一个并排复制到两张表的宏,但我现在想要选择我想要比较的列,但我不希望用户必须进入VBA代码才能执行此操作。我被告知它可以完成,我只需要一点帮助就可以实现这一点。非常感谢您的时间/精力 - 非常感谢 – user3655692

+0

用户不需要修改VBA代码,同时使用上面的'inputbox'处理列字母。两张纸上的色谱柱是否相同? – Gareth

+0

是的,这两列中的列是相同的,只是数据不同。我只是将代码复制到输入框中?我从来没有听说过输入框,对不起。再次感谢 – user3655692