创build一个文本框来触发一个VBA公式

最近,我创build了macros,它使用文本匹配在列B中进行search,并根据是否匹配来使用“Y”或“N”填充列H. 使用的代码如下。

lRow = .Range("B" & .Rows.Count).End(xlUp).Row .Range("H2:H" & lRow).FormulaR1C1 = "=IF(C[-6] = ""Commodities Ags/Softs"", " & _ "(IF(RC[-3]=R1C24,""Y"",(IF(RC[-3]=R2C24,""Y""," & _ "(IF(RC[-3]=R3C24,""Y"",(IF(RC[-3]=R4C24,""Y""," & _ "(IF(RC[-3]=R5C24,""Y"",(IF(RC[-3]=R6C24,""Y""," & _ "(IF(RC[-3]=R7C24,""Y"",(IF(RC[-3]=R8C24,""Y""," & _ "(IF(RC[-3]=R9C24,""Y"",""N"")))))))))))))))))),"""")" Range("H2:H" & lRow).Select Selection.Copy ActiveSheet.Range("H2:H" & lRow).PasteSpecial xlPasteValues 

我必须编写7个不同的macros,因为B列中有7个可能的匹配文本,而我匹配它的数据来自7个不同的源。 IE如果我从Commodities Ags / Softs收到数据,我将运行Commodities Ags / Softsmacros(其他macros是相同的,只是交换文本)。

现在我已经被告知数据会扩展到70个不同的来源,有70个潜在的匹配文本,这使得我的具体的macros到特定的数据方法是相当无用的。

我想知道如果有人知道我怎么可以概括macros,并在这样做,创build一个文本框,告诉macros在B列中匹配什么文本。

基本上,我希望如果我从一个特定的来源接收数据,我可以运行macros,一个文本框将出现在Excel中,无论我input什么,将是我想在B列匹配的文本,有效地改变广义macros观。

任何帮助将不胜感激,我是新的VBA,

干杯!

基本上:

 Dim sMatch as String sMatch = InputBox("Enter match data") lRow = .Range("B" & .Rows.Count).End(xlUp).Row With .Range("H2:H" & lRow) .FormulaR1C1 = "=IF(C[-6] = """ & sMatch & """, " & _ "(IF(RC[-3]=R1C24,""Y"",(IF(RC[-3]=R2C24,""Y""," & _ "(IF(RC[-3]=R3C24,""Y"",(IF(RC[-3]=R4C24,""Y""," & _ "(IF(RC[-3]=R5C24,""Y"",(IF(RC[-3]=R6C24,""Y""," & _ "(IF(RC[-3]=R7C24,""Y"",(IF(RC[-3]=R8C24,""Y""," & _ "(IF(RC[-3]=R9C24,""Y"",""N"")))))))))))))))))),"""")" .Value = .Value End With