我有一個實驗室作業簿,其中包含收集的實驗室資料。該作業表有一個輸入頁面,其中包括以下輸入頁面。輸入頁面有兩列,一列用于流入值,另一列用于流出值。
在輸入頁面上,Influent 以 B13 到 lRow 開頭,而 Effluent 以 C13 到 lRow 開頭。輸入頁面有一個名為 cbSheet 的組合框,因此用戶可以選擇將此資料傳輸到哪個設施日志表。
我已經撰寫了一個宏,它應該將輸入表中的 Influent 資料復制并轉置到組合框中選擇的表中,并將其粘貼到最后使用的行之后。接下來,宏應該復制流出資料并將其直接粘貼到同一張表上流入資料的下方。我希望宏交替復制流入轉置和粘貼到組合框中選擇的作業表,然后是流出。所以你會在日志表上有這樣的東西:
Influent "DATA"
Effluent "DATA"
Influent "DATA"
Effluent "DATA"
首先,我在嘗試參考 cbSheet 組合框時遇到錯誤。Variable Not Defined; 此外,我只選擇了流入資料,并且不確定如何包含流出資料,因此它們會隨著每周添加新資料而正確交替。有人可以幫我設定嗎?十分感謝你的幫助!
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
uj5u.com熱心網友回復:
編輯:錯過了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 ,成員在運行時而不是編譯時得到解決。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/465700.html
