当前结果
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
尝试使用命令按钮放置它,但似乎无法使其工作。
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适用于InputBox,但是当我尝试自动填充代码时,它会删除输入并留空。
答案 0 :(得分:1)
通常,您可以在代码中的任何位置使用InputBox()
来提示输入。您可以将其与命令按钮代码分开。
对于第一部分,您可以使用此公式。如果A列中有值,请将输入放在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
中输入公式=IF($A2<>"","Bruce","")
,则会检查单元格A2
是否为空。如果不为空,则会返回Bruce
。如果A2
为空,则会返回一个空字符串""
(实际上只会返回一个空白单元格。)。
然后如果您将该公式从B2
向下拖动到B1000
,公式将逐行更新...因此B3
会=IF($A3<>"","Bruce","")
1}},单元格B4
会有=IF($A4<>"","Bruce","")
等等。
有问题的VBA行选择范围,例如B2:B1000
,并应用公式=IF($A2<>"",myValue,"")
,从而在同一行的A列不为空时返回myValue
变量
(不要对""""
感到困惑。由于我们的原始公式在VBA中包含引号If($A2<>"" <--
,您必须基本加倍...否则VBA会将该行解释为{ {1}}然后抛出错误。"=IF($A2<>"
围绕公式引号中的"""" & myValue & """"
变量。如果您刚刚myValue
,那么您将收到错误,因为=IF($A2<>""""," & myValue & ","""")"
被用作命名范围/函数/而不是字符串。试试看看我的意思。)