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
- 尝试从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
- 有没有办法提示没有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
线正在做的就像它读取 – 它将范围添加公式。
如果您在工作表中,并在单元格B2
input公式=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不为空时返回myValue
variables。
(不要被""""
弄糊涂了,因为我们原来的公式包含了引号If($A2<>"" <--
在VBA中基本上要加倍,否则VBA会把这行解释为"=IF($A2<>"
,然后抛出一个错误,那么"""" & myValue & """"
围绕着myValue
的引号myValue
variables,如果你只是=IF($A2<>""""," & myValue & ","""")"
那么你会得到一个错误,因为myValue
被使用像一个命名的范围/函数/而不是一个string,试试看看我的意思)。