2017-05-12 35 views
1

已经像3或4小时一样搜索,但找不到任何正在工作的内容。VBA在新行中的空单元格中插入值

我想拥有的,什么是已经完成:

If meinWert > 16000000 And meinWert < 20000000 Then 
     Sheets("Aufträge").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) = Date 
     Sheets("Aufträge").Cells(Rows.Count, 1).End(xlUp).Offset(0, 1) = meinWert 

meinWert是从扫描仪输入这是一个订单号安勤。上面的代码是已经运行的更大的一部分。上面的代码的结果是这样的: enter image description here

而且每个订单也有一些项目(从1到喜欢的10个项目),现在我需要跳转代码为行“C”和插入的项目代码。就像我说的,每个订单有多个项目,因此每个项目(通过扫描仪输入)应该与右侧订单号码列在同一行上,如下所示: enter image description here

我想到了smth。像这样Sheets("Aufträge").Cells(Target.Row, 255).End(xlToLeft).Offset(0, 1)但它不工作。

回答

1

而不是你有什么,你应该弄清楚该行一次,然后使用该行的所有值插入到它:

Dim row As Long 
Dim ws As Worksheet 
Dim itemCount As Integer 
Dim bolMoreItems As Integer 

Set ws = Sheets("Aufträge") 

If meinWert > 16000000 And meinWert < 20000000 Then 
    bolMoreItems = True 
    row = ws.Cells(Rows.Count, 1).End(xlUp).row + 1 
    ws.Cells(row, 1) = Date 
    ws.Cells(row, 2) = "test" 

    itemCount = 1 'this isn't really needed except as a count to how many items there are. 

    While bolMoreItems = True 
     ws.Cells(row, 2 + itemCount) = "value" & itemCount 'instead of "value" & itemCount, put in whatever the value is. 
     If there_are_no_more_items Then 'need some check to determine if there are more items.... 
      bolMoreItems = False 
     End If 

     itemCount = itemCount + 1 

    Wend 

End If 

我用一个变量板材制作它更易于阅读和编码。显然,我不知道有多少物品,所以你需要做一些事情来弄清楚。我也不知道你想要插​​入新列,所以留给你。

顺便说一句,这不适合你,因为Target是一个关键字。我不知道代码的其余部分在做什么,但是这用于事件处理程序来指定触发事件的单元格。你可能没有这样的东西,所以这是行不通的。你可以做这样的事情,而是它看起来像:

Sheets("Aufträge").Cells(Sheets("Aufträge").Cells(Rows.Count, 1).End(xlUp).Row, 255) _ 
       .End(xlToLeft).Offset(0, 1) 

其中_简直是继续下一行的声明。这最终不清楚你想要做什么,反正也不是最好的解决方案。

+0

从来没有想过,看起来不错,但还有另一个问题。我永远不知道将要插入的物品的确切价值,并且每件物品将一个接一个地被扫描。 所以我想过你先扫描订单号,然后再扫描订单号,然后再次扫描订单号完成这一行并转到下一个订单号。 此外还有另一张表格,其中所有这些物品都与说明一起列出,另一个makro将添加每个将要扫描的物品,以便我们能够对库存进行概览。 – Patrick

+0

我会为此更新,但您需要一些确定输入完成时间的方法.... – OpiesDad

+0

非常感谢!我会在工作的星期一看一下,也许我需要发布整个脚本,但首先我会尝试通过我自己来解决它。 – Patrick

相关问题