我是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。目前,每个功能都可以正常使用,从选择月份到输入数据以及将数据排入正确的行等等。没有任何错误。
答案 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