使用组合框将输入 Sheet 中的数据复制到 VBA 中的日志 Sheet

Copy Data from Input Sheet to Log Sheet in VBA Using Combobox

我有一本实验室工作簿,其中包含收集的实验室数据。 worksheet 有一个输入页面,其中包括以下输入页面。输入页面有两列,一列用于进水值,一列用于流出物值。

在 Input 页面上,Influent 从 B13 开始到 lRow,Effluent 从 C13 开始到 lRow。输入页面有一个名为 cbSheet 的组合框,因此用户可以 select 将此数据传输到哪个设施日志 sheet。

我写了一个宏,它应该将 Influent 数据从输入 sheet 复制并转置到组合框中的 sheet selected 并将其粘贴到最后使用的行之后。接下来,宏应该复制出水数据并将其直接粘贴到同一 sheet 上的进水数据下方。我希望宏交替复制流入流转置和粘贴到组合框中的 sheet selected,然后是流出物。所以你会在日志中有这样的东西 sheet:

Influent "DATA"   
Effluent "DATA"  
Influent "DATA"  
Effluent "DATA" 

首先,我在尝试引用 cbSheet 组合框时遇到错误。 Variable Not Defined;此外,我只有流入数据 selected 并且不确定如何包括流出物以便它们在每周添加新数据时正确交替。有人可以帮我设置吗?非常感谢您的帮助!

    Dim wb As Workbook
    Dim ws1 As Worksheet
    Dim ws2 As Worksheet
    Dim lRow1 As Long
    Dim lRow2 As Long
    Dim lRow3 As Long
    
    Set wb = ThisWorkbook
    Set ws1 = wb.Sheets(1)
    lRow1 = ws1.Cells(Rows.Count, 2).End(xlUp).Row
    lRow2 = ws1.Cells(Rows.Count, 3).End(xlUp).Row
    
    If ws1.Range("A8").Value <> "" Then
    Set ws2 = wb.Worksheets(cbSheet.Value)
    lRow3 = ws2.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
    With ws1
    .Range("A13" & lRow1).Copy
    ws2.Range("A15" & lRow2).PasteSpecial xlPasteValues, Transpose:=True
    End With
    
    End If
    
End Sub

编辑:错过了 Transpose 位...

试试这个:

Sub Transfer()
    Dim wb As Workbook, ws2 As Worksheet, wsInput As Object 'not As Worksheet
    Dim cDest As Range, wsName
    
    Set wb = ThisWorkbook
    Set wsInput = wb.Sheets(1)
    
    wsName = wsInput.cbSheet.Value
    If Len(wsName) > 0 Then
        If wsInput.Range("A8").Value <> "" Then
            Set cDest = wb.Worksheets(wsName).Cells(Rows.Count, "A").End(xlUp).Offset(1)
            With wsInput.Range("B13:C" & wsInput.Cells(Rows.Count, "B").End(xlUp).Row)
                cDest.Resize(.Columns.Count, .Rows.Count).Value = _
                                     Application.Transpose(.Value)
            End With
        End If
    Else
        MsgBox "First select a destination worksheet from the drop-down list!", _
               vbExclamation, "No destination selected"
    End If
End Sub

您不能将 wsInput 声明为 Worksheet,因为“现成的”Worksheet 对象模型不包含名为“cbSheet”的成员。通过声明它 As Object 成员在 run-time 而不是 compile-time 得到解决。