繁体   English   中英

Excel VBA 单元格格式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM