簡體   English   中英

EXCEL VBA動態數據輸入

[英]EXCEL VBA Dynamic Data Entry

在此處輸入圖片說明

  1. Range(“ D:D”)中的紅色顏色框是從Me.ComboBox1.Value引用的值
  2. 黃色和綠色分別是來自Me.TextBox1Me.TextBox2的數據。 在Me中,將根據Me.ComboBox1選擇的值將Me.TextBox1Me.TextBox2值插入此工作表中。
  3. 因此,在這種情況下,我希望根據用戶選擇的紅色輸入黃色和綠色。
  4. 另一件事是我為黃色和綠色數據的最后一行放置了.OffSet(1,0).EntireRow.Insert

應該這樣做:

nextrow = Sheets("DB Cust").Range("C" & Sheets("DB Cust").Rows.Count).End(xlUp).Row + 1

更新在您進行編輯之后,我認為可能需要類似的東西。 請注意,這取決於每個數據塊中的E列中始終有一個值,以使其起作用:

Dim lngNewRow As Long
Dim strLookupValue As String

strLookupValue = "A" ' or B/C/D etc.

lngNewRow = Sheets("DB Cust").Range("D:D").Find(strLookupValue).Offset(, 1).End(xlDown).Row + 1
Sheets("DB Cust").Rows(lngNewRow).Insert
Sheets("DB Cust").Cells(lngNewRow, "E").Value = "Data for column E"
Sheets("DB Cust").Cells(lngNewRow, "F").Value = "Data for column F"

關於第4點,如果“ D”是列表中的最后一個值,那么為什么還要插入其他空白行,想必它下面的所有行還是空白?

我不確定,但是您打電話給自己范圍的方式對我來說很奇怪。 嘗試使用另一種方法定義計數范圍。

更改此:

nextrow = WorksheetFunction.CountA(Sheets("DB Cust").Range("C:C")) + 2

對此:

Dim myWB as Workbook, DBcust as Worksheet
Set myWB = Excel.ActiveWorkbook
Set DBcust = myWB.Worksheets("DB Cust")

nextrow = Excel.WorksheetFunction.CountA(DBcust.Range(DBcust.Cells(1,3),DBcust.Cells(DBcust.UsedRange.Rows.Count,3)) + 2

我將書和表分配給了一個變量,以提高可靠性,但是如果需要,可以再次明確聲明它們。 此代碼假定工作簿是當前活動的工作簿,否則,您將不得不使用工作簿名稱設置變量。

另外,看起來好像不需要在“ With”塊中偏移函數的“ rfound”部分。 這就是“ With”的用途。 只是一件小事,但是像這樣毫無意義的代碼只會使您特別頭疼,所以我的建議是將其刪除。

我尚未將其加載到VBA IDE中,因此請仔細檢查拼寫錯誤。 謝謝!

更新:

閱讀您的評論后,我仔細查看了您的代碼以及您要執行的操作。 似乎您正在嘗試將textbox1的值(無論如何...如果稍稍解釋一下,將會有所幫助)放置到與用戶在combobox1中定義的搜索結果位置相對應的單元格偏移中。 nextrow變量位於行偏移量參數內部,但是該位置已經是您想要的位置。 嘗試更改此:

With rfound

rfound.Offset(nextrow, 1).Value = TextBox1.Value
rfound.Offset(nextrow, 2).Value = TextBox1.Value
rfound.Offset(nextrow, 3).Value = TextBox1.Value
rfound.Offset(nextrow, 4).Value = TextBox1.Value
rfound.Offset(nextrow, 5).Value = TextBox1.Value
rfound.Offset(nextrow, 6).Value = TextBox1.Value
rfound.Offset(nextrow, 7).Value = TextBox1.Value
rfound.Offset(nextrow, 8).Value = TextBox1.Value
MsgBox ("Data entry success")

End With

對此:

With rfound

.Offset(0, 1).Value = TextBox1.Value
.Offset(0, 2).Value = TextBox1.Value
.Offset(0, 3).Value = TextBox1.Value
.Offset(0, 4).Value = TextBox1.Value
.Offset(0, 5).Value = TextBox1.Value
.Offset(0, 6).Value = TextBox1.Value
.Offset(0, 7).Value = TextBox1.Value
.Offset(0, 8).Value = TextBox1.Value
MsgBox ("Data entry success")

End With

您可能會注意到,按照我以前的建議,我也刪除了多余的“ rfound”。 查看這是否可行,如果可以,則可能要一起刪除newrow變量。

祝你好運,讓我們知道如何進行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM