gpt4 book ai didi

vba - Excel VBA - 如果单元格为空输入内容,否则返回错误

转载 作者:行者123 更新时间:2023-12-04 21:58:28 26 4
gpt4 key购买 nike

我正在尝试创建一个代表具有命名托架的仓库的数据库。这将具有登录 Material 和在需要时检查它们的功能。

我的 Excel 工作簿有一个登录表和七张标有 A 行到 G 行的表,以表示仓库中的过道。每个过道有五个架子和一些隔间。此信息被连接起来以提供唯一的位置。我目前正在努力让 VBA 检查要分配 Material 的位置是否为空,如果是,那么它应该粘贴从登录表复制的信息。不幸的是,无论我的工作表中有什么,代码只会用“TRUE”填充 ActiveCell,并显示我要求的错误消息,如果它不是真的。我也尝试过 IfEmpty,结果相同。

我的代码如下所示:

Sub LogIn()

Dim Row As String
Dim Location As String

' assign values to variables
Worksheets("Log In").Activate
Location = Cells(6, 3).Value
Row = Cells(3, 3).Value

' copy new inputs to clipboard
Sheets("Log In").Range("C8:C11").Copy

' find the correct location within the separate racking sheets
Sheets("Row " & Row).Activate
Selection = Cells.Find(What:=Location, After:=Cells(1, 1), LookIn:=xlFormulas, _
lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlNext, _
MatchCase:=False, searchformat:=False).Activate
Selection = Sheets("Log In").Cells(6, 3).Value
Selection = ActiveCell.Offset(0, 2).Activate

' check whether location is empty
If ActiveCell.Value = "" Then

' paste new inputs onto racking sheet
ActiveCell.PasteSpecial

' or return an error
Else: MsgBox "The location you have selected is currently occupied"
End If

End Sub

最佳答案

您正在使用 Selection错误的。首先,我将解释正在发生的事情,然后是如何修复它。

当你写类似的东西时

Selection = "Hello"

它用“Hello”填充选定的单元格。 Excel 无法设置 Selection到“Hello”,而是将所有选定单元格的值设置为“Hello”,即它与
Selection.Value = "Hello"

您正在使用 Selection = something.Activate我假设这意味着您要选择 something .它可以做到这一点,但不是你想要的。
something.Activate激活(并因此选择)单元格或范围 something .它还返回 bool 值 True (我不知道它什么时候会返回 False ,也许其他人可以提供帮助)。所以当行 Selection = something.Activate执行时,VBA 首先评估 = 右侧的内容返回 True (并且在评估期间还选择 something )。现在它设置 Selection.ValueTrue因为 something刚刚被选中, something.Value设置为 True .

现在你能做的最好的事情就是停止使用 Selection。和 Activate .如果您需要使用 ActiveCell作为某种用户输入,在 sub 的开头将 Range 设置为 ActiveCell 并在需要时使用它。

而不是更改 ActiveCell一直使用变量。像这样的东西:
Dim myCell as Range
'...
Set myCell = Sheets("Row " & Row).Cells.Find(.... 'You should rename Row because it's already a property of Range.
myCell.Value = Sheets("Log In").Cells(6, 3).Value
Set myCell = myCell.Offset(0, 2)

If myCell.Value = "" Then
'...

关于vba - Excel VBA - 如果单元格为空输入内容,否则返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39576278/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com