簡體   English   中英

Excel2016。如何在工作表的Userform1上顯示特定值?

[英]Excel 2016. How to show specific value on Userform1 from a sheet?

片 形成 我是VBA的新手,在該站點的少數用戶的幫助下,我已經做了一些事情。 @Lambik在幫助我解決/實現這一目標,但是由於我自己的錯,這個問題全都糊塗了。 他確實為我工作了一件事,我非常感激。 對於在答復部分中如何正確格式化代碼的知識,我只能道歉。 話雖如此,我仍然需要這件事的幫助。 我是網絡專家,Excel和VBA並不是我的命令范圍,這就是為什么您的耐心受到高度贊賞。

該工作簿包含12張紙。 一年中的每個月一次。 使用組合框選擇月份(下拉列表/菜單)。 在用戶表單上選擇月份后,數據將輸入到相關表中。 一月或二月或與此相關的任何事件(基於組合框的選擇)。

在用戶表單上,我需要顯示G列最后一行的值。 我該怎么辦? @Lambik要求我發布完整的代碼,這就是我犯錯並在答復中輸入錯誤的地方。 老實說,它看起來像C +。 因此,在用戶表單上,我可以添加一個文本框,用戶可以在其中看到其中的值。 我將發布代碼並嘗試維護格式。

Private Sub UserForm_Initialize()

    Dim i As Long
    For i = 1 To ThisWorkbook.Sheets.Count
        Me.ComboBox1.AddItem ThisWorkbook.Sheets(i).Name
    Next

End Sub

CommandButton1的代碼是,

Private Sub CommandButton1_Click()

  Dim dcc As Long
   Dim abc As Worksheet, pfl As Worksheet

  Set abc = ThisWorkbook.Worksheets(Me.ComboBox1.Value)
  Set pfl = Sheets("ProfitLoss")

   With abc

   dcc = .Range("A" & Rows.Count).End(xlUp).Row

.Cells(dcc + 1, 1).Value = Date
.Cells(dcc + 1, 2).Value = Me.TextBox1.Value
.Cells(dcc + 1, 3).Value = Me.TextBox2.Value
.Cells(dcc + 1, 4).Value = Me.TextBox3.Value
.Cells(dcc + 1, 5).Value = Me.TextBox4.Value
.Cells(dcc + 1, 6).Value = Me.TextBox5.Value

End With

With pfl
dcc = .Range("A" & Rows.Count).End(xlUp).Row

.Cells(dcc + 1, 1).Value = Date
.Cells(dcc + 1, 2).Value = Me.TextBox1.Value
.Cells(dcc + 1, 3).Value = Me.TextBox2.Value
.Cells(dcc + 1, 4).Value = Me.TextBox3.Value
.Cells(dcc + 1, 5).Value = Me.TextBox4.Value
.Cells(dcc + 1, 6).Value = Me.TextBox5.Value
End With

TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
TextBox5.Text = ""


End Sub

好的,我已盡力使兩個代碼保持格式,並且不遺漏任何內容,以便任何試圖幫助/提供幫助的人都可以輕松理解。

現在需要的是將表單上的值顯示到用戶表單上。 我僅為此目的制作了一個TextBox6。 在一月份工作表和所有其他工作表上,列是G,值是。 每次添加條目時行都會更改。

非常感激你的幫助。 我無法發布我認為的圖片。 我幾天前嘗試過,網站說我還不能發布。 我真的希望我沒有遺漏任何值得一提的東西。 感謝您的時間和精力。 我在筆記本電腦上,可以立即嘗試任何建議/代碼。 感謝您的幫助。

干杯。

PS每個功能目前都起作用,從選擇月份到輸入數據以及將數據排入正確的行等等。 沒有任何錯誤。

按照OP的說明進行更新:

您想要顯示的值必須在文本框中 (而不是標簽),並且必須是活動工作表之一

但是,您說用戶應該不能在用戶窗體上更改余額值,因此標簽要比文本框好,因為文本框是要更改的,而標簽則不能。

修改代碼以在文本框中顯示所需的值

Private Sub UserForm_Initialize()

Dim wsActive As Worksheet
Dim i As Long, LastRow As Long
Set wsActive = Activesheet
LastRow = wsActive.Cells(wsActive.Rows.Count, "G").End(xlUp).row

'TextBox 1 carries the desired value
TextBox1.Value = wsActive.Cells(LastRow, 7).Value

For i = 1 To ThisWorkbook.Sheets.Count
    Me.ComboBox1.AddItem ThisWorkbook.Sheets(i).Name
Next

End Sub

當然,請確保標簽“ balance”下方的文本框名為Label1!

如果您要使用標簽,如我建議的那樣,請更改:

TextBox1.Value = wsActive.Cells(LastRow, 7).Value

進入

Label1.Caption = "Balance is: " & wsActive.Cells(LastRow,7).Value

若要在更改組合框時根據要求更新標題的值,請在專用子UserForm_Initialize()下面添加

Private Sub ComboBox1_Change()
Dim SheetName As String
Dim ws As Worksheet
Dim LastRow As Long

SheetName = ComboBox1.Value
Set ws = Sheets(SheetName)

LastRow = ws.Cells(ws.Rows.Count, "G").End(xlUp).Row
Label1.Caption = "Balance is: " & ws.Cells(LastRow, 7).Value

End Sub

暫無
暫無

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

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