【问题标题】:Excel VBA Cell FormatExcel VBA 单元格格式
【发布时间】:2020-02-17 07:35:17
【问题描述】:

我正在使用用户表单界面为自己制作一个简单的跟踪电子表格,从许多不同的在线教程中学习,因为我以前从未编写过代码。 使用 excel 功能区,我设置了具有特定格式的某些单元格,一个用于日期(日月年)和一个用于货币([$$-en-AU]-#,##0.00;[Red]-[$$ -zh-CN]-#,##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

【问题讨论】:

  • 请在问题中包含您尝试使用的代码,并说明您在使用它时遇到的问题。
  • 嗨braX,我还没有尝试任何代码,只使用excel功能区中的单元格编号/日期格式选项。我已经编辑了我的问题以反映这一点。谢谢
  • 这几乎肯定是代码的问题,特别是从文本框中转储值的部分。如果我不得不猜测,你正在做 Range(A2) = textbox 而不是 Range(A2).Value = textbox.Value
  • 嗨,Brax,我已经编辑了我的原始问题以包含卸载用户表单时使用的代码。你介意指出我哪里出错了吗?

标签: excel vba


【解决方案1】:

就像我在之前的评论中所说,问题是: .Cells(lrow, "B") = Me.TextBox6

根据经验,当您只想使用 VBA 修改单元格的值时,应使用 .Cells(...).Value 否则,您可能会覆盖某些属性(在本例中为格式)

使用Me.TextBox.6 并不理想,在这种情况下我也更喜欢明确表示(即使这样可以正常工作)。所以,总而言之:

.Cells(lrow, "B").Value = Me.Textbox6.Value

【讨论】:

  • 哦,我想我现在了解代码背后的属性以及 Range 的工作原理。感谢您的帮助,现在一切正常! :)
  • @new11:如果答案(在某种程度上)解决了您的问题,勾选左侧代码侧的复选框,使其成为可接受的答案,不会杀死任何人...
  • 嗨 FaneDuru,我不知道这一切是如何运作的。我已经打勾了,谢谢你告诉我:)
  • 嗨@Harry,自从遵循您的建议以来,输入到用户表单文本框中的数据现在保持单元格的格式。但是,我注意到在某些情况下没有保留格式日期。例如;当我将日期输入为:“2020 年 1 月 1 日”时,单元格格式会将其更正为长日期,但是,当我第二次在文本框中输入日期为“01/01/2020”时,单元格的格式会不纠正它很长的日期。有人知道我该如何解决这个问题吗?再次感谢大家!
猜你喜欢
  • 2013-11-02
  • 1970-01-01
  • 2017-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多