ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1734|回复: 9

[求助] 使用VBA將公式以文字型態於原位置顯示

[复制链接]

TA的精华主题

TA的得分主题

发表于 2013-8-29 16:16 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
使用VBA將公式以文字型態於原位置顯示

檔案內有範例說明
使用VBA將公式以文字型態於原位置顯示.rar (4.28 KB, 下载次数: 19)

TA的精华主题

TA的得分主题

发表于 2013-8-29 21:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Public Sub 转换()
On Error Resume Next
Dim i As Integer, j As Integer, rn As Range
For i = 1 To Sheet1.UsedRange.Rows.Count

For j = 1 To Sheet1.UsedRange.Columns.Count

Set rn = Sheet1.Cells(i, j)

Sheet1.Cells(i, j).Select

If ActiveCell.CurrentArray Then

rn.Replace What:="=", Replacement:=" =", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
        
        Else
        
rn.Replace What:="=", Replacement:=" =", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
        
        
        rn.Replace What:="=", Replacement:=" {=", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
        
       rn.Value = rn.Value & "}"
End If
Next
Next

End Sub

TA的精华主题

TA的得分主题

发表于 2013-8-29 21:38 | 显示全部楼层
本帖最后由 crazy0qwer 于 2013-8-29 21:43 编辑

这是 A 列的代码,自己修改为需要的区域。
  1. Sub AAA()
  2.     with Columns("A")
  3.         .NumberFormatLocal = "@"
  4.         .Value = .Formula
  5.     end with
  6. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-8-29 22:14 | 显示全部楼层
crazy0qwer 发表于 2013-8-29 21:38
这是 A 列的代码,自己修改为需要的区域。

也是種方法
可是無法區分一般公式及組數公式

TA的精华主题

TA的得分主题

发表于 2013-8-29 23:01 | 显示全部楼层
本帖最后由 crazy0qwer 于 2013-8-29 23:04 编辑
AmoKat 发表于 2013-8-29 22:14
也是種方法
可是無法區分一般公式及組數公式

  1. Sub AAA()
  2.     Dim R   As Range
  3.     On Error Resume Next
  4.     Application.ScreenUpdating = False
  5.     Range("A1:O6").NumberFormatLocal = "@"
  6.     For Each R In Range("A1:O6")
  7.         If R.HasArray Then
  8.             R.Value = "{" & R.Formula & "}"
  9.         Else
  10.             R.Value = R.Formula
  11.         End If
  12.     Next
  13. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-8-29 23:21 | 显示全部楼层
crazy0qwer 发表于 2013-8-29 23:01

第一階段完成
下方VBA是參考其他網友修改的,但還有其他問題
' 1. 當該工作表沒有公式時會產生錯誤
' 2. 遇到多格陣列公式時會跑很久也會錯誤
' 3. 單格陣列公式時前後用 {}包住, 多格陣列公式時前後用 []包住 - 表示
請大家繼續幫忙

  1. Sub ex()
  2.     Dim A As Range, sh As Worksheet
  3.     For Each sh In Sheets
  4.     For Each A In sh.Cells.SpecialCells(xlCellTypeFormulas)
  5.         If A.HasArray Then
  6.            A = "{" & A.FormulaLocal & "}"
  7.         Else
  8.            A = "'" & A.FormulaLocal
  9.         End If
  10.     Next
  11.     Next
  12. End Sub
复制代码


測試檔案 使用VBA將公式以文字型態於原位置顯示.rar (13.15 KB, 下载次数: 3)

TA的精华主题

TA的得分主题

发表于 2013-8-29 23:30 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
AmoKat 发表于 2013-8-29 23:21
第一階段完成
下方VBA是參考其他網友修改的,但還有其他問題
' 1. 當該工作表沒有公式時會產生錯誤

这样应该会快点:
  1. Sub AAA()
  2.     Dim R   As Range
  3.     Dim C   As Long
  4.     On Error Resume Next
  5.     Application.ScreenUpdating = False
  6.     C = Application.Calculation
  7.     Application.Calculation = xlCalculationManual
  8.     Range("A1:O6").NumberFormatLocal = "@"
  9.     For Each R In Range("A1:O6")
  10.         If R.HasArray Then
  11.             R.Value = "{" & R.Formula & "}"
  12.         Else
  13.             R.Value = R.Formula
  14.         End If
  15.     Next
  16.     Application.Calculation = C
  17. End Sub
复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2013-8-30 21:01 | 显示全部楼层
crazy0qwer 发表于 2013-8-29 23:30
这样应该会快点:

關閉計算及螢幕顯示可以快一些

Range("A1:O6").NumberFormatLocal = "@"
是不是將儲存格改為文字格式

TA的精华主题

TA的得分主题

发表于 2013-8-30 21:16 | 显示全部楼层
AmoKat 发表于 2013-8-30 21:01
關閉計算及螢幕顯示可以快一些

Range("A1:O6").NumberFormatLocal = "@"

设置单元格格式为  "文本" 格式。

TA的精华主题

TA的得分主题

发表于 2017-7-30 14:56 | 显示全部楼层
EXCEL本身就能在原位切换显示公式或计算结果,如果非要用VBA,这样一句就OK:
  1. Sub 显示公式或结果()
  2.     ActiveWindow.DisplayFormulas = Not ActiveWindow.DisplayFormulas
  3. End Sub
复制代码
显示公式.gif

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-3-29 21:16 , Processed in 0.061070 second(s), 15 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表