用VBA对话框输入的数字对应到EXCEL表格后为什么不能进行计算

用VBA对话框输入的数字对应到EXCEL表格后为什么不能进行计算,第1张

确实是问题没写清楚,我猜测你的意思应该是:

1、通过输入框让用户输入两个数字,A和B

2、将数字A填到某张工作表的A1单元格,将数字B填到某张工作表的B1单元格

3、在C1单元格中设置公式计算两个数字的乘积

我想代码这样写应该没问题

A1=val(inputbox("请输入数字A1"))

B1=val(inputbox("请输入数字B1"))

sheetActive.cells(1,1).value=A1

sheetActive.cells(1,2).value=B1

sheetActive.cells(1,3).formula="=A1*B1"

VBA中没办法什么属性和方法,可以直接获取条件格式产生的颜色值,这里是个变通方案

函数用法: 返回指定区域中左上角单元格条件格式颜色值

假设C6单元格有条件格式为真,颜色为黄色,那么CFColor(Range("C6"))返回值为6

CFColor(Range("C6:E10")) 也只会返回C6单元格的

总之这是个麻烦的事,或者直接把条件格式的表达式写进VBA

Public Function CFColor(rng As Range) As Long

Dim oFC As FormatCondition '定义一个条件格式对象

Dim sF1 As String

Dim iRow As Long

Dim iColumn As Long

Dim IsCFMet As Boolean

Set rng = rng(1, 1) '取传入“区域”的左上角的有效单元格

If rng.FormatConditions.Count >0 Then '如果有条件格式 就进入处理过程

For Each oFC In rng.FormatConditions '遍历 每一个条件格式对象

If oFC.Type = xlCellValue Then '如果 条件格式 对象的类型为 xlCellValue(译为 单元格值?)

IsCFMet = False '赋初值 假

Select Case oFC.Operator '进入运算符 处理分支

Case xlEqual '=等于

IsCFMet = (rng.Value = CInt(Mid(oFC.Formula1, 2))) '模拟等值关系运算

Case xlNotEqual '不等于

IsCFMet = (rng.Value <>CInt(Mid(oFC.Formula1, 2)))

Case xlGreater '大于

IsCFMet = (rng.Value >CInt(Mid(oFC.Formula1, 2)))

Case xlGreaterEqual '大于等于

IsCFMet = (rng.Value >= CInt(Mid(oFC.Formula1, 2)))

Case xlLess '小于

IsCFMet = (rng.Value <CInt(Mid(oFC.Formula1, 2)))

Case xlLessEqual '小于等于

IsCFMet = (rng.Value <= CInt(Mid(oFC.Formula1, 2)))

IsCFMet = (rng.Value >= CInt(Mid(oFC.Formula1, 2)) And rng.Value <= CInt(Mid(oFC.Formula1, 2)))

Case xlNotBetween '介于...之间

IsCFMet = (rng.Value <CInt(Mid(oFC.Formula1, 2)) Or rng.Value >CInt(Mid(oFC.Formula1, 2)))

End Select

If IsCFMet Then '如果经过上面的 模拟 关系运算 最后的结果 是 真

CFColor = oFC.Font.ColorIndex '就将 条件格式 指定 的颜色值 作为函数值 返回

Exit Function '函数 结束

End If

Else '如果 条件格式对象的 类型 不是 xlCellValue

're-adjust the formula back to the formula that applies

'to the cell as relative formulae adjust to the activecell

With Application '用系统自带的 函数来对 条件格式 的公式 进行 拆解

iRow = rng.Row '行号

iColumn = rng.Column '列号

sF1 = .Substitute(oFC.Formula1, "ROW()", iRow) '用行号代换 Row()函数

sF1 = .Substitute(sF1, "COLUMN()", iColumn) '列号

sF1 = .ConvertFormula(sF1, xlA1, xlR1C1) '在 A1 和 R1C1 引用样式之间进行转换

sF1 = .ConvertFormula(sF1, xlR1C1, xlA1, , rng)

End With

IsCFMet = rng.Parent.Evaluate(sF1) '将 装换好的 公式 字符串 代入 求解函数 进行求值

End If

If IsCFMet Then '求出来的 值 如果 是 真

CFColor = oFC.Interior.ColorIndex '函数 返回 条件格式的 颜色值

Exit Function ' 结束

End If

Next oFC

End If'rng.FormatConditions.Count >0

End Function

1、打开excel。当前函数栏中数字完全显示。但是单元格数字显示不正常。

2、选中显示不正常的数字。右键选择设置单元格格式。

3、选择格式为文本。点击确定。

4、设置完成后,双击显示不正常的数字单元格。

5、数字显示正常。

扩展资料

1982年,Microsoft推出了它的第一款电子制表软件──Multiplan,并在CP/M系统上大获成功,但在MS-DOS系统上,Multiplan败给了Lotus 1-2-3。这个事件促使了Excel的诞生,正如Excel研发代号Doug Klunder:做Lotus 1-2-3能做的,并且做的更好。

1985年,第一款Excel诞生,它只用于Mac系统;1987年11月,第一款适用于Windows系统的Excel也产生了(与Windows环境直接捆绑,在Mac中的版本号为2.0)。

Lotus1-2-3迟迟不能适用于Windows系统,到了1988年,Excel的销量超过了Lotus ,使得Microsoft站在了PC软件商的领先位置。

这次的事件,促成了软件王国霸主的更替,Microsoft巩固了它强有力的竞争者地位,并从中找到了发展图形软件的方向。此后大约每两年,Microsoft就会推出新的版本来扩大自身的优势,目前Excel的最新版本为16,也被称作Microsoft Office Excel 2016。

早期,由于和另一家公司出售的名为Excel的软件同名,Excel曾成为了商标法的目标,经过审判,Microsoft被要求在它的正式文件和法律文档中以Microsoft Excel来命名这个软件。但是,随着时间的过去,这个惯例也就逐渐消逝了。

Excel虽然提供了大量的用户界面特性,但它仍然保留了第一款电子制表软件VisiCalc的特性:行、列组成单元格,数据、与数据相关的公式或者对其他单元格的绝对引用保存在单元格中。

Excel是第一款允许用户自定义界面的电子制表软件(包括字体、文字属性和单元格格式)。它还引进了“智能重算”的功能;

当单元格数据变动时,只有与之相关的数据才会更新,而原先的制表软件只能重算全部数据或者等待下一个指令。同时,Excel还有强大的图形功能。

1993年Excel第一次被捆绑进Microsoft Office中时,Microsoft就对Microsoft Word和PowerPoint的界面进行了重新设计,以适应这款当时极为流行的应用程序。

从1993年,Excel就开始支持Visual Basic for Applications(VBA).VBA是一款功能强大的工具,它使Excel形成了独立的编程环境。

使用VBA和宏,可以把手工步骤自动化,VBA也允许创建窗体来获得用户输入的信息。但是,VBA的自动化功能也导致Excel成为宏病毒的攻击目标。

参考资料:Excel.百度百科


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11726651.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存