[英]Excel VBA Cell Format
我正在使用用户表单界面为自己制作一个简单的跟踪电子表格,从许多不同的在线教程中学习,因为我以前从未编码过。 使用 excel 功能区,我设置了具有特定格式的某些单元格,一个用于日期(日月年)和一个用于货币([$$-en-AU]-#,##0.00;[Red]-[$$ -en-AU]-#,##0.00)。
我的问题是:每当我将数据输入 textbox6、textbox20、textbox21 和 textbox22 时,然后关闭用户表单,将所有输入的数据传输到工作表中。 输入到上述文本框中的数据会覆盖单元格的格式。 无论用户在文本框中输入什么,有没有办法锁定单元格格式或使其使用某种格式?
这是将数据添加到工作表并卸载用户表单时使用的代码: Private Sub cmdAdd_Click() 'Copy input values to sheet. Dim rw As Integer Dim ws As Worksheet Dim lrow As Long Dim LO As ListObject Dim LEO As Range Set ws = Worksheets("2020_Data") Set LO = ws.ListObjects("Table1") 'lrow = ws.Cells(Rows.Count, "B") .End(xlUp). .Offset(1, 0) .Row With LO.Range.Columns(2) Set LEO = .Find(what:="", after:=.Cells(1), LookIn:=xlValues, _ searchorder:=xlByRows, searchdirection:=xlNext) If Not LEO Is Nothing Then lrow = LEO.Row ' MsgBox LEO.Row 'First empty row at column B End If End With 'rw = ws.Cells.Find(What:="*", SearchOrder:=xlRows, SearchDirection:=xlPrevious, LookInValues) .Row + 1 With ws .Cells(lrow, "B") = Me.TextBox6 .Cells(lrow, "C") = Me.TextBox21 .Cells(lrow, "F") = Me.ComboBox2 .Cells(lrow, "G") = Me.ComboBox3 .Cells(lrow, "I") = Me.TextBox16 .Cells(lrow, "H") = Me.TextBox17 .Cells(lrow, "J") = Me.TextBox18
Private Sub cmdAdd_Click() 'Copy input values to sheet. Dim rw As Integer Dim ws As Worksheet Dim lrow As Long Dim LO As ListObject Dim LEO As Range Set ws = Worksheets("2020_Data") Set LO = ws.ListObjects("Table1") 'lrow = ws.Cells(Rows.Count, "B") .End(xlUp). .Offset(1, 0) .Row With LO.Range.Columns(2) Set LEO = .Find(what:="", after:=.Cells(1), LookIn:=xlValues, _ searchorder:=xlByRows, searchdirection:=xlNext) If Not LEO Is Nothing Then lrow = LEO.Row ' MsgBox LEO.Row 'First empty row at column B End If End With 'rw = ws.Cells.Find(What:="*", SearchOrder:=xlRows, SearchDirection:=xlPrevious, LookInValues) .Row + 1 With ws .Cells(lrow, "B") = Me.TextBox6 .Cells(lrow, "C") = Me.TextBox21 .Cells(lrow, "F") = Me.ComboBox2 .Cells(lrow, "G") = Me.ComboBox3 .Cells(lrow, "I") = Me.TextBox16 .Cells(lrow, "H") = Me.TextBox17 .Cells(lrow, "J") = Me.TextBox18
就像我在之前的评论中所说的,问题是: .Cells(lrow, "B") = Me.TextBox6
根据经验,当您只想使用 VBA 修改单元格的值时,您应该使用.Cells(...).Value
否则,您可能会覆盖某些属性(在这种情况下,格式)
使用Me.TextBox.6
并不理想,在这种情况下我也更喜欢明确表示(即使这会很好用)。 所以,总而言之:
.Cells(lrow, "B").Value = Me.Textbox6.Value
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.