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

时间:2018-11-03 16:03:23

标签: excel

Sheet Form我是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,值是。每次添加条目时行都会更改。

非常感谢您的帮助。我无法发布我认为的图片。我几天前尝试过,网站说我还不能发布。我真的希望我没有遗漏任何值得一提的东西。感谢您的时间和精力。我在笔记本电脑上,可以立即尝试任何建议/代码。感谢您的提前帮助。

干杯。

P.S。目前,每个功能都可以正常使用,从选择月份到输入数据以及将数据排入正确的行等等。没有任何错误。

1 个答案:

答案 0 :(得分:0)

按照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