【问题标题】:Excel VBA: USerform P&L Entered into columnsExcel VBA:USerform P&L 已输入列
【发布时间】:2018-09-10 19:59:37
【问题描述】:

我是一个新手 - 擅长改编代码,没有从头开始开发的经验,但我正在努力学习。只需要一些加速帮助。

我有一个损益表用户表单,我正在尝试创建一些 VBA 来搜索下一个空白列,然后在第一个空白列中输入损益标签,在第二列中输入损益值。

我已经开始尝试了,但似乎只是跨行而不是向下一列。我知道这是因为 lRow, 1-7 范围但是如果我将其更改为 lRow, 1它只是在一个单元格中重叠的所有条目。似乎我可能需要一个循环,但我不确定并且有点超出我的深度。

到目前为止我尝试的代码仅适用于标签。当我在旁边的列(下一个空白列)中选择“保存”时,不确定如何将值合并到同一个 VBA 中。

 Private Sub CommandButton2_Click()
 'Copy input values to sheet.
    Dim lRow As Long
    Dim ws As Worksheet
        Set ws = Worksheets("Database")
    lRow = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
    With ws
        .Cells(lRow, 1).Value = Me.saleslbl
        .Cells(lRow, 2).Value = Me.costofsaleslbl
        .Cells(lRow, 3).Value = Me.netincomelbl
        .Cells(lRow, 4).Value = Me.accountinglbl
        .Cells(lRow, 5).Value = Me.rentlbl
        .Cells(lRow, 6).Value = Me.bankfeeslbl
        .Cells(lRow, 7).Value = Me.utilitieslbl
    End With
End Sub

任何指导将不胜感激。

【问题讨论】:

  • 添加一些“之前”和“之后”场景的截图

标签: vba excel


【解决方案1】:
  1. 在 Excel 中查找第一个空白列是一个常青的问题。 SO上有很多解决方案。基本上你有两个选择:​​i>

1.a.:

Dim lCol As Long
lCol = ws.Cells(ws.Columns.Count, 1).End(xlToLeft).Offset(0, 1).Column

此命令将查找第一行中的第一个空单元格的列,但忽略该列中的所有其他单元格。

1.b.:

lCol = ws.UsedRange.Columns.Count + 1

此命令将获取该工作表中曾经使用过的最右侧列旁边的列,而不管内容如何,​​因此位于边框左侧的列也可能看起来为空。

  1. 更改Cells的其他参数,例如:

    .Cells(1, lCol).Value = Me.saleslbl
    .Cells(2, lCol).Value = Me.costofsaleslbl
    ....
    .Cells(1, lCol + 1).Value = Me.salestextbox    ' or whatever is the name of the textbox
    .Cells(2, lCol + 1).Value = Me.costofsalestextbox
    

【讨论】:

    猜你喜欢
    • 2020-01-22
    • 2017-06-01
    • 2013-01-31
    • 1970-01-01
    • 2011-04-02
    • 2011-12-23
    • 2013-11-14
    • 2016-10-25
    • 1970-01-01
    相关资源
    最近更新 更多