ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 细品RibbonX(1-59) (转)

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2015-4-12 17:07 | 显示全部楼层
本帖已被收录到知识树中,索引项:UI界面定制
楼煮,图挂了哇,求图~~~

TA的精华主题

TA的得分主题

发表于 2015-4-18 21:23 | 显示全部楼层
不错,正在学习中!

TA的精华主题

TA的得分主题

发表于 2015-5-20 21:33 | 显示全部楼层
感谢楼主的分享,太有用了,不回帖支持下都不好意思

TA的精华主题

TA的得分主题

发表于 2015-9-17 14:16 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2015-9-23 22:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
收藏藏 学习

TA的精华主题

TA的得分主题

发表于 2015-10-7 16:54 | 显示全部楼层
jiulongpo 发表于 2012-7-27 21:05
接 细品RibbonX(56):使用Visual Studio开发Excel商务应用程序(2)


收藏学习中......

TA的精华主题

TA的得分主题

发表于 2015-10-23 13:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
jiulongpo 发表于 2012-7-27 20:58
接 细品RibbonX(55):在Visual Studio中开发Excel商务应用程序(1)

附件如下:

在Visual Studio中开发Excel商务应用程序(1).rar

156.26 KB, 下载次数: 59

TA的精华主题

TA的得分主题

发表于 2015-10-23 16:39 | 显示全部楼层

我用VBA+XML做时失败,代码如下:
XML代码:
  1. <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui">
  2.     <ribbon>
  3.         <tabs>
  4.             <tab id="myTab" label="专用等式" keytip="MT">

  5.                 <group id="Default" label="开始">
  6.                   <labelControl id="StartLabel1"
  7.                         label="选择一个"/>
  8.                   <labelControl id="StartLabel2"
  9.                         label="开始点"/>
  10.                   <labelControl id="StartLabel3"
  11.                         label="用于计算."/>
  12.                 </group>


  13.                 <group id="Equations" label="等式">
  14.                   <toggleButton id="Loan"
  15.                         label="贷款"
  16.                         onAction="SetupLoan"
  17.                         getPressed="SelectedEquation"/>
  18.                   <toggleButton id="Annuity"
  19.                         label="年金"
  20.                         onAction="SetupAnnuity"
  21.                         getPressed="SelectedEquation"/>
  22.                   <toggleButton id="EffectiveRate"
  23.                         label="有效利率"
  24.                         onAction="SetupEF"
  25.                         getPressed="SelectedEquation"/>
  26.                 </group>


  27.                 <group id="DataEntry" getLabel="GetDataEntryLabel">
  28.                   <editBox id="Rate"
  29.                         label="利率"
  30.                         onChange="GetRateText"/>
  31.                   <dropDown id="Term"
  32.                          label="期数"
  33.                          getVisible="TermVisible"
  34.                          getItemCount="TermCount"
  35.                          getItemID="TermItemID"
  36.                          getItemLabel="TermItemLabel"
  37.                          onAction="GetSelectedTerm"/>
  38.                   <editBox id="Payment"
  39.                         label="期初付款"
  40.                         getVisible="PaymentVisible"
  41.                         onChange="GetPaymentText"/>
  42.                   <editBox id="Amount"
  43.                         getLabel="AmountLabel"
  44.                         getVisible="AmountVisible"
  45.                         onChange="GetAmountText"/>
  46.                 </group>


  47.                 <group id="Finishcalculate" label="完成">
  48.                   <toggleButton id="Startcac"
  49.                         label="开始计算"
  50.                         onAction="Calculate"/>

  51.                 </group>

  52.             </tab>
  53.         </tabs>
  54.     </ribbon>
  55. </customUI>
复制代码


VBA代码:
  1.     Public CalcType
  2.     Public Rate
  3.     Public Term
  4.     Public Payment
  5.     Public Amount
  6.    
  7.     Sub SetupLoan(control As IRibbonControl, ByVal pressed As Boolean)
  8.         ' 设置计算类型
  9.         CalcType = "Loan"

  10.         ' 设置按下状态
  11.         pressed = True

  12.         ' 使整个功能区无效
  13.         ribbon.Invalidate
  14.     End Sub

  15.     Sub SetupAnnuity(control As IRibbonControl, ByVal pressed As Boolean)
  16.         ' 设置计算类型
  17.         CalcType = "Annuity"

  18.         ' 设置按下状态
  19.         pressed = True

  20.         ' 使整个功能区无效
  21.         ribbon.Invalidate
  22.     End Sub

  23.     Sub SetupEF(control As IRibbonControl, ByVal pressed As Boolean)
  24.         ' 设置计算类型
  25.         CalcType = "Effective Rate"

  26.         ' 设置按下状态
  27.         pressed = True

  28.         ' 使整个功能区无效
  29.         ribbon.Invalidate
  30.     End Sub

  31.     Function SelectedEquation(control As IRibbonControl) As Boolean
  32.         ' 基于当前的等式确定按下状态
  33.         Select Case CalcType
  34.             Case "Loan"
  35.                 If control.ID = "Loan" Then
  36.                     SelectedEquation = True
  37.                 Else
  38.                     SelectedEquation = False
  39.                 End If
  40.             Case "Annuity"
  41.                 If control.ID = "Annuity" Then
  42.                     SelectedEquation = True
  43.                 Else
  44.                     SelectedEquation = False
  45.                 End If
  46.             Case "Effective Rate"
  47.                 If control.ID = "EffectiveRate" Then
  48.                     SelectedEquation = True
  49.                 Else
  50.                     SelectedEquation = False
  51.                 End If
  52.             Case Else
  53.                 SelectedEquation = False
  54.         End Select
  55.     End Function

  56.     Function TermVisible(control As IRibbonControl) As Boolean
  57.         ' 应用程序不会使用该字段进行有效利率计算
  58.         If CalcType = "Effective Rate" Then
  59.             TermVisible = False
  60.         Else
  61.             TermVisible = True
  62.         End If
  63.     End Function

  64.     Function PaymentVisible(control As IRibbonControl) As Boolean
  65.         ' 当处理年金计算时应用程序仅使用该字段
  66.         If CalcType = "Annuity" Then
  67.             PaymentVisible = True
  68.         Else
  69.             PaymentVisible = False
  70.         End If
  71.     End Function

  72.     Function AmountVisible(control As IRibbonControl) As Boolean
  73.         ' 应用程序不会使用该字段进行有效利率计算
  74.         If CalcType = "Effective Rate" Then
  75.             AmountVisible = False
  76.         Else
  77.             AmountVisible = True
  78.         End If
  79.     End Function


  80.     Function GetDataEntryLabel(control As IRibbonControl) As String
  81.         ' 通过计算类型的选择决定组标签
  82.         Select Case CalcType
  83.             Case "Loan"
  84.                 GetDataEntryLabel = "输入贷款信息"
  85.             Case "Annuity"
  86.                 GetDataEntryLabel = "输入年金信息"
  87.             Case "Effective Rate"
  88.                 GetDataEntryLabel = "输入有效利率信息"
  89.             Case Else
  90.                 GetDataEntryLabel = "没有实现!"
  91.         End Select
  92.     End Function

  93.     Function AmountLabel(control As IRibbonControl) As String
  94.         ' 通过计算类型的选择决定数量标签
  95.         ' 由于有效利率计算不使用该控件,因此应用程序不给它提供标签
  96.         Select Case CalcType
  97.             Case "Loan"
  98.                 AmountLabel = "贷款金额"
  99.             Case "Annuity"
  100.                 AmountLabel = "每月年金付款"
  101.             Case Else
  102.                 AmountLabel = "没有实现!"
  103.         End Select
  104.     End Function

  105.     Sub GetRateText(control As IRibbonControl, ByVal text As String)
  106.         ' 保存文本的输入值
  107.         Rate = Val(text)
  108.     End Sub

  109.     Sub GetSelectedTerm(control As IRibbonControl, ByVal selectedId As String, ByVal selectedIndex As Int32)
  110.         ' 存储默认值
  111.         Term = 0

  112.         ' 保存贷款项
  113.         If CalcType = "Loan" Then
  114.             Select Case selectedIndex
  115.                 Case 0
  116.                     Term = 10
  117.                 Case 1
  118.                     Term = 15
  119.                 Case 2
  120.                     Term = 20
  121.                 Case 3
  122.                     Term = 30
  123.             End Select
  124.         End If

  125.         ' 保存年金项
  126.         If CalcType = "Annuity" Then
  127.             Select Case selectedIndex
  128.                 Case 0
  129.                     Term = 5
  130.                 Case 1
  131.                     Term = 7
  132.                 Case 2
  133.                     Term = 10
  134.                 Case 3
  135.                     Term = 15
  136.                 Case 4
  137.                     Term = 20
  138.             End Select
  139.         End If
  140.     End Sub

  141.     Sub GetPaymentText(control As IRibbonControl, ByVal text As String)
  142.         ' 保存文本的输入值
  143.         Payment = Int32.Parse(text)
  144.     End Sub

  145.     Sub GetAmountText(control As IRibbonControl, ByVal text As String)
  146.         ' 保存文本的输入值
  147.         Amount = Int32.Parse(text)
  148.     End Sub

  149.     Sub Calculate(control As IRibbonControl)
  150.         ' 选择计算并调用
  151.         Select Case CalcType
  152.             Case "Loan"
  153.                 CalculatePMT(Rate,Term,Amount)
  154.             Case "Annuity"
  155.                 CalculateFV(Rate, Term, Payment, Amount)
  156.             Case "Effective Rate"
  157.                 CalculateEFFECT (Rate)
  158.         End Select
  159.     End Sub


  160.     ' 计算贷款数量
  161.     Sub CalculatePMT(ByVal Rate As Double, ByVal NPer As Integer, ByVal PV As Integer)
  162.         ' 计算利率
  163.         PeriodicRate = (Rate / 100) / 12

  164.         ' 计算期数
  165.         Periods = NPer * 12

  166.         ' 执行计算
  167.         ActiveCell = "=PMT(" & PeriodicRate & "," + Periods & "," + PV & ",0,0)"
  168.     Application.Calculation = xlCalculationAutomatic
  169.     'Application.Calculation = xlCalculationManual
  170.         'Application.ActiveWindow.ActiveCell.Calculate()
  171.     End Sub

  172.     ' 计算年金数量
  173.     Sub CalculateFV(ByVal Rate As Double, ByVal NPer As Integer, ByVal PMT As Integer, ByVal PV As Integer)
  174.         ' 计算利率
  175.         PeriodicRate = (Rate / 100) / 12

  176.         ' 计算期数
  177.         Periods = NPer * 12

  178.         ' 执行计算
  179.         ActiveCell = "=FV(" + PeriodicRate & "," + Periods & "," + PMT & "," + PV & ",0)"
  180.     Application.Calculation = xlCalculationAutomatic
  181.     'Application.Calculation = xlCalculationManual
  182.         'Application.ActiveWindow.ActiveCell.Calculate()
  183.     End Sub

  184.     ' 计算有效利率
  185.     Sub CalculateEFFECT(ByVal Rate As Double)
  186.         ' 计算利率
  187.         PeriodicRate = Rate / 100

  188.         ' 执行计算
  189.         ActiveCell = "=EFFECT(" + PeriodicRate & ",12)"
  190.     Application.Calculation = xlCalculationAutomatic
  191.     'Application.Calculation = xlCalculationManual
  192.         'Application.ActiveWindow.ActiveCell.Calculate()
  193.     End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2015-10-24 08:10 | 显示全部楼层
VBA万岁 发表于 2015-10-23 16:39
我用VBA+XML做时失败,代码如下:
XML代码:

附上用VSTO制作的文件:

在Visual Studio中开发Excel商务应用程序2.rar

111.64 KB, 下载次数: 49

TA的精华主题

TA的得分主题

发表于 2015-10-29 16:26 | 显示全部楼层
jiulongpo 发表于 2012-7-27 16:38
接 细品RibbonX(16):RibbonX开发基础问答

附上本例测试文件如下:

细品RibbonX(16):RibbonX开发基础问答.zip

216.72 KB, 下载次数: 56

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

本版积分规则

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

GMT+8, 2024-11-18 14:46 , Processed in 0.045749 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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