Vba 如何向单元格添加值

Vba 如何向单元格添加值,vba,excel,excel-2010,Vba,Excel,Excel 2010,我正在使用电子表格做库存扫描在箱子里的零件 我试图在(Target.Row,5)(Row 6)旁边添加一个A2值 如何使A2或A9或下一个扫描值显示在列F上,以便如果列E&F不匹配,我知道零件位于错误的箱子上 我尝试了.Value=Target.Worksheet.Cells(Target.Row,1).Value,但不起作用 这是我的完整代码 Option Explicit Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal

我正在使用电子表格做库存扫描在箱子里的零件 我试图在
(Target.Row,5)(Row 6)旁边添加一个A2值

如何使A2或A9或下一个扫描值显示在列F上,以便如果列E&F不匹配,我知道零件位于错误的箱子上

我尝试了
.Value=Target.Worksheet.Cells(Target.Row,1).Value
,但不起作用

这是我的完整代码

Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)

    If Target.Cells.Count > 1 Or IsEmpty(Target) Or Target.Column <> 1 Then Exit Sub

    If Not SheetExists("WarehouseInventory") Then Exit Sub

    Dim Result As Variant
    Set Result = Sheets("WarehouseInventory").Cells.Range("E:E").Find(Target)

    If Result Is Nothing Then
       Target.Worksheet.Cells(Target.Row, 2) = "Data New Bin"
    Else
        Target.Worksheet.Cells(Target.Row, 2) = Result.Worksheet.Cells(Result.Row, 4)
        Target.Worksheet.Cells(Target.Row, 3) = Result.Worksheet.Cells(Result.Row, 5)
        Target.Worksheet.Cells(Target.Row, 4) = Result.Worksheet.Cells(Result.Row, 6)
        Target.Worksheet.Cells(Target.Row, 5) = Result.Worksheet.Cells(Result.Row, 7)
    End If

End Sub

Public Function SheetExists(SheetName As String) As Boolean
    Dim ws As Worksheet
    SheetExists = False

    For Each ws In ThisWorkbook.Worksheets
        If ws.Name = SheetName Then SheetExists = True
    Next ws
End Function
选项显式
私有子工作簿(ByVal Sh作为对象,ByVal目标作为范围)
如果Target.Cells.Count>1或IsEmpty(Target)或Target.Column 1,则退出Sub
如果不存在(“仓库库存”),则退出子系统
作为变量的模糊结果
设置结果=工作表(“仓库库存”)。单元格。范围(“E:E”)。查找(目标)
如果结果是什么,那么
Target.Worksheet.Cells(Target.Row,2)=“数据新仓位”
其他的
Target.Worksheet.Cells(Target.Row,2)=Result.Worksheet.Cells(Result.Row,4)
Target.Worksheet.Cells(Target.Row,3)=Result.Worksheet.Cells(Result.Row,5)
Target.Worksheet.Cells(Target.Row,4)=Result.Worksheet.Cells(Result.Row,6)
Target.Worksheet.Cells(Target.Row,5)=Result.Worksheet.Cells(Result.Row,7)
如果结束
端接头
公共函数SheetExists(SheetName为字符串)为布尔值
将ws设置为工作表
SheetExists=False
对于此工作簿中的每个ws。工作表
如果ws.Name=SheetName,则SheetExists=True
下一个ws
端函数

那么
Target.Worksheet.Cells(Target.Row,6.Value=Target.Worksheet.Cells(Target.Row,1.Value)呢


如果您只需要A2,则在所有行中,将Target.Row替换为2,这是一个如何实现所需结果的示例

Private Sub Worksheet_Change(ByVal Target As Range)
Dim x&, y&
If Target.Column = 6 Then
    y = 5: x = Target.Row
    While Cells(x, y) <> "": x = x - 1: Wend
    If Cells(Target.Row, 5) <> "" Then Cells(Target.Row, 6) = Cells(x, 1)
End If
End Sub

此处的示例文件

不,不是这样,我不希望第6行中的第1行值。-我正在扫描一个垃圾桶,然后是序列号,一旦我不使用那个垃圾桶,我就去下一个垃圾桶,然后做同样的操作,我这样做是为了看看序列号是否放错了垃圾桶。我试着比较E&F电池,看看匹配是否正常。您可以通过几种不同的方式比较两列中的值。我建议使用一个简单的VLOOKUP并检查它返回的内容。如果您喜欢使用自己的代码,那么for循环中的for循环就可以做到这一点。我在iPhone上,所以我不能提供一个例子。你的代码中有什么东西不起作用吗?还是希望在原始代码中添加其他代码?可能会在第一张纸上显示另一张图片和所需结果。现在你有A2突出显示和F列突出显示,这与你提供的代码没有任何意义。我的代码正在工作,我只需要添加额外的代码,可以将A2值添加到F列
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim x&, y&, Result As Range, ws As Worksheet
    Application.EnableEvents = 0
    If Target.Count > 1 Then
        Application.EnableEvents = 1
        Exit Sub
    End If
    If Not Intersect(Target, [A1:A99999]) Is Nothing Then
        With ThisWorkbook
            For Each ws In .Worksheets
                If ws.Name = "WarehouseInventory" Then
                    Set ws = .Worksheets("WarehouseInventory")
                    Set Result = ws.[E:E].Find(Target.Value)
                    Exit For
                End If
            Next ws
            If Result Is Nothing Then
                Target.Offset(, 1).Value = "Data New Bin"
                Application.EnableEvents = 1
                Exit Sub
            Else
                Target.Offset(, 1).Value = ws.Range(Result.Address).Offset(, -1).Value
                Target.Offset(, 2).Value = ws.Range(Result.Address).Value
                Target.Offset(, 3).Value = ws.Range(Result.Address).Offset(, 1).Value
                Target.Offset(, 4).Value = ws.Range(Result.Address).Offset(, 2).Value
                y = 5: x = Target.Row
                While .ActiveSheet.Cells(x, y) <> "": x = x - 1: Wend
                Target.Offset(, 5).Value = .ActiveSheet.Cells(x, 1).Value
            End If
        End With
    End If
    Application.EnableEvents = 1
End Sub