2017-05-12 34 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

相關問題