Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA窗体为另一个宏选择列_Excel_Vba_Spreadsheet_Userform - Fatal编程技术网

Excel VBA窗体为另一个宏选择列

Excel VBA窗体为另一个宏选择列,excel,vba,spreadsheet,userform,Excel,Vba,Spreadsheet,Userform,我正在尝试在excel中创建一个用户表单,用于选择将用于传递到另一个宏的列 总的来说,我希望有一个用户表单,可以从工作表中选择一列/多列,然后表单中的sure输入的该列将在宏中用于比较列。我已经有一个比较列的宏,但是我需要它,这样用户就可以从中选择他们想要的列,而不必进入VBA代码 在用户表单中是否有这样做的方法?如果没有,还有其他方法吗 任何帮助都会很好!!谢谢 这是我当前用于比较电子表格中的列的代码: Sub IdentifyMatches() For X = 2 To 27 If

我正在尝试在excel中创建一个用户表单,用于选择将用于传递到另一个宏的列

总的来说,我希望有一个用户表单,可以从工作表中选择一列/多列,然后表单中的sure输入的该列将在宏中用于比较列。我已经有一个比较列的宏,但是我需要它,这样用户就可以从中选择他们想要的列,而不必进入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
Sub-identificationmatches()
对于X=2到27
如果((单元格((X),2).Value单元格((X,8).Value))那么
单元格((X),14)。Value=“地址不匹配”
其他的
单元格((X),14)。Value=“地址匹配”
如果结束
如果((单元格((X),3).Value单元格((X,9).Value))那么
单元格((X),15)。Value=“邮政编码不匹配”
其他的
单元格((X),15)。Value=“邮政编码匹配”
如果结束
如果((单元格((X),4).Value单元格((X,10).Value)),则
单元格((X),16)。Value=“覆盖不匹配”
其他的
单元格((X),16)。Value=“封面匹配”
如果结束
如果((单元格((X),5).Value单元格((X,11).Value))那么
单元格((X),17)。Value=“名称不匹配”
其他的
单元格((X),17)。Value=“名称匹配”
如果结束
如果((单元格((X),6).Value单元格((X,12).Value))那么
单元格((X),18)。Value=“年龄不匹配”
其他的
单元格((X),18)。Value=“年龄匹配”
如果结束
下一个X
端接头

我将使用以下类似的方法,允许用户输入列范围(假设您要设置整个列的范围):


您可以使用一个输入框让用户输入范围详细信息并在宏中使用此信息吗?是的,这是最好的选项,正如@Gareth建议的那样,以列名作为输入示例我建议使用take inputStr=“A”,这是一个输入框。然后你可以通过整数值对它进行迭代。例如,A&i,其中i=integer。然后它将变成A1、A2等等。希望这能对你有所帮助。嗨,谢谢你的帮助。我认为这不是我要找的正确的东西。我的工作簿上有两张工作表(并且想比较其中的某些列)。我已经有一个宏可以并排复制到两张图纸上,但我现在希望能够选择要比较的列,但我不希望用户必须进入VBA代码才能进行比较。我被告知这是可以做到的,我只需要一点帮助来尝试实现这一点。非常感谢您的时间/努力-非常感谢用户将我不需要修改VBA代码,因为
inputbox
处理列字母。在两张表上比较的列是否相同?是的,两张表中的列是相同的,只是数据不同而已。我是否只是将代码复制到输入框中?我以前从未听说过输入框,s抱歉。再次感谢microsoft:
显示一个供用户输入的对话框。返回在对话框中输入的信息。
请用您当前使用的代码更新您的问题。
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)