ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 一键开启关闭函数

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-10-19 07:37 来自手机 | 显示全部楼层 |阅读模式
  各位老师达人 我想自由随时的开启一个应用程序 就是我写了一个程序 我想用时我就按一个功能键比如“f1”
就开启 反之就关闭
  不知道我这想法excel原来就有 还是没有 没有要怎么实现呢?

TA的精华主题

TA的得分主题

发表于 2024-10-19 08:37 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-10-19 09:16 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
不用函数用vba

TA的精华主题

TA的得分主题

发表于 2024-10-19 09:34 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
去VBA模板  那玩意儿能搞

TA的精华主题

TA的得分主题

发表于 2024-10-19 09:37 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
函数是不行,用VBA吧

TA的精华主题

TA的得分主题

发表于 2024-10-19 09:37 | 显示全部楼层
本帖最后由 leepoison 于 2024-10-18 14:36 编辑

VBA,
1.先判断sheet2是否为空。
如果为空,将sheet1有公式的所有格内的公式不带等号,剪切到sheet2对应的位置,并隐藏sheet2
如果不为空,将sheet2有公式的所有格内的公式带等号,剪切到sheet1对应的位置,并隐藏sheet2


  1. Sub MoveFormulasWithCheck()
  2.     Dim ws1 As Worksheet
  3.     Dim ws2 As Worksheet
  4.     Set ws1 = ThisWorkbook.Sheets("Sheet1")
  5.     Set ws2 = ThisWorkbook.Sheets("Sheet2")
  6.    
  7.     Dim isSheet2Empty As Boolean
  8.     isSheet2Empty = True
  9.    
  10.     ' 判断 Sheet2 是否为空
  11.     For Each cell In ws2.UsedRange
  12.         If Not IsEmpty(cell.Value) Then
  13.             isSheet2Empty = False
  14.             Exit For
  15.         End If
  16.     Next cell
  17.    
  18.     If isSheet2Empty Then
  19.         MoveFormulasFromSheet1ToSheet2 ws1, ws2
  20.         ws2.Visible = xlSheetHidden
  21.     Else
  22.         MoveFormulasFromSheet2ToSheet1 ws1, ws2
  23.         ws2.Visible = xlSheetHidden
  24.     End If
  25. End Sub

  26. Sub MoveFormulasFromSheet1ToSheet2(ws1 As Worksheet, ws2 As Worksheet)
  27.     Dim cell As Range
  28.     For Each cell In ws1.UsedRange
  29.         If cell.HasFormula Then
  30.             ws2.Cells(cell.Row, cell.Column).Value = Mid(cell.Formula, 2)
  31.             cell.ClearContents
  32.         End If
  33.     Next cell
  34. End Sub

  35. Sub MoveFormulasFromSheet2ToSheet1(ws1 As Worksheet, ws2 As Worksheet)
  36.     Dim cell As Range
  37.     For Each cell In ws2.UsedRange
  38.         If Not IsEmpty(cell.Value) Then
  39.             ws1.Cells(cell.Row, cell.Column).Formula = "=" & cell.Value
  40.             cell.ClearContents
  41.         End If
  42.     Next cell
  43. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-19 11:12 来自手机 | 显示全部楼层
谢谢各位 我去Vba版块发个帖看看
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 21:26 , Processed in 0.028803 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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