使用组合框将输入 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 得到解决。
我有一本实验室工作簿,其中包含收集的实验室数据。 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 得到解决。