首页 > 解决方案 > 将用户窗体中的值插入从固定单元格开始的 excel 工作表?

问题描述

我有一个单元格范围Sheets("INVOICE MAKER").Range("D18:D37")(总共 20 个单元格)和一个名为Add Items的小用户窗体

UserForm中有一个Textbox和一个Submit Button

因此,如果我在该文本框中写一些东西并单击提交按钮,则数据应该写入范围内的下一个可用空单元格Sheets("INVOICE MAKER").Range("D18:D37")。如果所有 20 个单元格都填充了数据,则显示一条消息,例如"No more rows are available to write data"

下面的代码不是从 开始写入数据Cell D18,而是从 开始写入数据D1。并且在 cell 之后不会停止D37

Option Explicit
Dim lRow As Long
Dim ws As Worksheet
Set ws = Worksheets("INVOICE MAKER")

lRow = ws.Cells.Find(What:="*", SearchOrder:=xlRows, _
    SearchDirection:=xlPrevious, LookIn:=xlValues).Row + 1
    
'check for a part number
If Trim(Me.Textbox.Value) = "" Then
  Me.Textbox.SetFocus
  MsgBox "Please Type Item Name"
  Exit Sub
End If

With ws
  .Cells(lRow, 5).Value = Me.Textbox.Value
End With

End Sub

标签: vba

解决方案


希望以下代码对您有所帮助:

Public Working_Sheet As Worksheet
Public All_Cell_Value As Boolean
Public Write_Cell_No As Integer
Public Content As String

'When button in the form is clicked
Sub Button1_Click()
Write_Content
End Sub

'validation and content writing function
Public Function Write_Content()
All_Cell_Value = True
Set Working_Sheet = Worksheets("Sheet1")

For i = 18 To 37

If Trim(Working_Sheet.Cells(i, "D")) = "" Then
All_Cell_Value = False
Write_Cell_No = i
Exit For
End If

Next i

If All_Cell_Value = False Then
Content = InputBox("Enter the value")
If Content = "" Then
MsgBox ("No Data")
Else
Working_Sheet.Cells(i, "D").Value = Content
End If

Else
MsgBox ("Sorry content is full")
End If


End Function

推荐阅读