Excel VBA – 根据InputBox自动填充列

目前的结果

A1 B1 Item Deposit to Apple Trash Banana Grape 

 Private Sub CommandButton1_Click() Dim myValue As Variant myValue = InputBox("Enter Where", "Deposit to", Trash) Range("B2").Value = myValue End Sub 
  1. 尝试从input中获取值以便自动填充整列B,只要A列中有一个值即可。

试图把这与命令button,但似乎无法得到它的工作。

 Sub test() Dim lastRow As Long lastRow = Range("A" & Rows.Count).End(xlUp).Row Range("B3").AutoFill Destination:=Range("B3:B" & lastRow) End Sub 

期望的结果

 A1 B1 Item Deposit to Apple Trash Banana Trash Grape Trash 
  1. 有没有办法提示没有CommandButton的值?

目前,CommandButton为InputBox工作,但是当我尝试代码自动填充它将删除input并保持空白。

您可以在代码中的任何位置使用InputBox() ,一般来说,可以提示input。 你可以从你的命令button代码中分离出来。

对于第一部分,你可以使用这个公式。 在列A中有值的地方,把input放在列B中:

 Sub t() Dim myValue As String Dim lastCel As Range Set lastCel = Range("A" & Rows.Count).End(xlUp) myValue = InputBox("Enter Where", "Deposit to") Range("B2:B" & lastCel.Row).Formula = "=IF($A2<>""""," & """" & myValue & """" & ","""")" Range("B2:B" & lastCel.Row).Value = Range("B2:B" & lastCel.Row).Value Range("B2").Value = myValue End Sub 

编辑: .Formula线正在做的就像它读取 – 它将范围添加公式。

如果您在工作表中,并在单元格B2input公式=IF($A2<>"","Bruce","")它将检查单元格A2是否为空。 如果它不是空的话,它会返回Bruce 。 如果A2 空,将返回一个空string"" (实际上它只返回一个空白单元格)。

然后,如果将公式从B2下拉到B1000 ,则公式将逐行更新…因此B3将具有=IF($A3<>"","Bruce","") ,并且单元格B4将具有=IF($A4<>"","Bruce","")等等

有问题的VBA行select范围,例如B2:B1000 ,并应用公式=IF($A2<>"",myValue,"")因此当同一行的列A不为空时返回myValuevariables。

(不要被""""弄糊涂了,因为我们原来的公式包含了引号If($A2<>"" <--在VBA中基本上要加倍,否则VBA会把这行解释为"=IF($A2<>" ,然后抛出一个错误,那么"""" & myValue & """"围绕着myValue的引号myValuevariables,如果你只是=IF($A2<>""""," & myValue & ","""")"那么你会得到一个错误,因为myValue被使用像一个命名的范围/函数/而不是一个string,试试看看我的意思)。