此代碼將查看每個工作表名稱並在組合框中列出它們。當您選擇其中一張工作表時,它將採用最後一行的值並將它們放置在表格上的文本框中。
添加這些控件到窗體:
- 組合框稱爲命名
txtColA
,txtColB
和txtColC
cmbSheets
- 三個文本框。
-
Private Sub UserForm_Initialize()
Dim wrkSht As Worksheet
'Populate the combo-box with sheet names.
For Each wrkSht In ThisWorkbook.Worksheets
With Me.cmbSheets
.AddItem wrkSht.Name
End With
Next wrkSht
End Sub
'Will place the values from the last row columns A:C in textboxes on the form.
Private Sub cmbSheets_Change()
Dim rLastCell As Range
Dim shtSelected As Worksheet
'Set a reference to the sheet selected by the combo box.
Set shtSelected = ThisWorkbook.Worksheets(cmbSheets.Value)
Set rLastCell = LastCell(shtSelected)
With shtSelected
Me.txtColA = .Cells(rLastCell.Row, 1)
Me.txtColB = .Cells(rLastCell.Row, 2)
Me.txtColC = .Cells(rLastCell.Row, 3)
End With
End Sub
'This function can be placed in a normal module.
'Finds the last cell given a worksheet reference.
Public Function LastCell(wrkSht As Worksheet) As Range
Dim lLastCol As Long, lLastRow As Long
On Error Resume Next
With wrkSht
lLastCol = .Cells.Find("*", , , , xlByColumns, xlPrevious).Column
lLastRow = .Cells.Find("*", , , , xlByRows, xlPrevious).Row
If lLastCol = 0 Then lLastCol = 1
If lLastRow = 0 Then lLastRow = 1
Set LastCell = wrkSht.Cells(lLastRow, lLastCol)
End With
On Error GoTo 0
End Function
注 -如果任何一個值,需要特定的格式化然後應該複印時使用該命令FORMAT
被添加。
E.g.如果一個單元格的日期爲2016年5月1日的01/05/2016,那麼它將在文本框中顯示爲5/1/2016(轉換爲美國日期格式)。
使用代碼Me.txtColC = Format(.Cells(rLastCell.Row, 3), "dd-mmm-yy")
將在窗體上顯示日期爲01-May-16。
同樣的貨幣應該被添加爲Me.txtColB = Format(.Cells(rLastCell.Row, 2), "Currency")
否則£15將顯示爲。
如果你想排除某些表看看SELECT CASE...END SELECT
代碼塊(或IF...ELSE...END IF
)
如果你想在片改變爲您在組合框中選擇不同的值,只是增加shtSelected.Select
到的結束cmbSheets_Change()
事件。
您是否可以不使用Worksheet.Name屬性來獲取正確的工作表,然後使用[lastRow](https://www.rondebruin.nl/win/s9/win005.htm)計算來檢索最後一行? – QHarr
說實話,我不確定,因爲我對VBA還比較陌生,以前沒有使用過這個屬性。在查看時,我不確定它是如何讓我A - 根據cobo_ClientID或B的值識別正確的表格 - 能夠從正確的表格中找到值MAX更新日期。 – Rodger
每個客戶工作表的名稱與客戶ID相同。因此,如果有3個客戶端的ID分別爲「RB1」,「RB2」和「QJ4」,則有3個客戶端工作表,分別命名爲「RB1」,「RB2」和「QJ4」。我已經能夠獲得代碼來識別正確的工作表,但仍然無法從最後一行獲取表單中的單元格中的數據。 – Rodger