簡體   English   中英

根據Excel中的組合框值將數據從一張紙傳輸到另一張紙

[英]Transfer data from from one sheet to another based on combobox value in excel

我的工作簿中有2張紙和一張用戶表格。

Sheet1有3行,其中包含班次類型信息。(A2 = A,A3 = B和A4 = C),我在col B(開始時間),col C(結束時間)等中還有其他數據。

我現在使用表格在工作表2中輸入員工姓名(txtName)及其班次類型(cboShift)。col A =名稱,col B =班次類型)現在我想在班次2中通過單擊UPDATE按鈕完成員工數據時他們將工作表1中的相關班次信息(開始時間,結束時間...)復制到下一個單元格中。

 Private Sub cmdUpdate_Click()

    Dim LastRow As Long
    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
    Dim rng As Range
    Dim rgnSearch As Range
    Dim rngFound As Range

    Set ws1 = Sheets("Sheet1")
    Set ws2 = Sheets("Sheet2")

    LastRow = ws2.Range("A" & ws2.Rows2.Count).End(xlUp).row + 1
    ws2.Range("A" & LastRow).Value = Me.txtName.Text
    ws1.Range("A" & LastRow).Offset(0, 1).Value = Me.cboShift.Text

    Set rgnSearch = ws1.Range("A1", ws1.Cells(Rows2.Count, 1).End(xlUp))

    With rgnSearch
        Set rngFound = .Find(Me.txtName.Text, LookIn:=xlValues)
        If Not rngFound Is Nothing Then
            ws1.Range("C" & rngFound.row & ":F" & rngFound.row).Copy Destination:=ws2.Range("C" & LastRow)
        End If
    End With
End Sub
End Sub

我在兩張紙上都有標題。

當我運行代碼時,出現錯誤“未找到方法或數據成員)。

LastRow = ws2.Range("A" & ws2.**Rows2**.Count).End(xlUp).row + 1

我的下一個問題是:當我單擊“添加”按鈕時,是否有任何方法可以為每個人傳輸數據,而不是在所有Thanx之后進行數據傳輸?

你可能是說

LastRow = ws2.Range("A" & ws2.Rows.Count).End(xlUp).row + 1

代替

LastRow = ws2.Range("A" & ws2.Rows2.Count).End(xlUp).row + 1

上面@ h2so4中已經回答的錯誤導致。

但是,在代碼中需要考慮以下幾點:

  1. ws1.Range("A" & LastRow).Offset(0, 1).Value = Me.cboShift.Text ,不知道它的同一LastRow兩個ws1 ANS ws2 ,是它???

  2. 成功查找后,在If Not rngFound Is Nothing Then ,可以使用其他編碼來復制同一行的單元格C:F的內容。

代替:

ws1.Range("C" & rngFound.row & ":F" & rngFound.row).Copy Destination:=ws2.Range("C" & LastRow)

您可以使用:

rngFound.Offset(, 2).Resize(1, 4).Copy Destination:=ws2.Range("C" & LastRow)

暫無
暫無

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

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