周一至周五 : 08:30 - 17:30 客服专员电话/微信:17301649371 QQ:2627049059
微信咨询

扫码微信咨询

关注公众号

关注微信公众号

电话: 021 5161 9370
返回顶部
依据单元格不同的值给另外一个单元格设置不同的单元格格式
显示全部楼层 倒序浏览 发表日期 2023-05-27 20:02:59 587次阅读 2次回复
本帖最后由 hessen 于 2023-5-27 20:06 编辑

依据单元格不同的值给另外一个单元格设置不同的单元格格式


需求:在多币种时,如果选择了一个币种类型,则在金额的单元格显示该币种对应的格式。比如如果为人民币则显示人民币符号,如果是美元则显示美元符号。
效果:

GIF 2023-05-27 20-02-14.gif

方法:




  1.         Public Sub RangeChanged(sender As Object, e As SpreadsheetGear.Windows.Controls.RangeChangedEventArgs) Implements Interfaces.IExcelWorkBook.RangeChanged
  2.             If Range("C4").Text = "人民币" Then
  3.                 Range("E4").NumberFormat = "¥#,##0.00;¥-#,##0.00"
  4.             ElseIf Range("C4").Text = "美元" Then
  5.                 Range("E4").NumberFormat = "$#,##0.00;-$#,##0.00"
  6.             Else
  7.                 Range("E4").NumberFormat = "0.00"
  8.             End If
  9.         End Sub '单元格编辑完成后执行事件
复制代码


写在了单元格值改变事件中,若值发生变化时,则格式对应的进行设置。






























电话/微信:18049989370 QQ:857188287
  1. Imports SpreadsheetGear
  2. Imports C1.Silverlight
  3. Imports C1.Silverlight.C1MessageBoxButton
  4. Imports C1.Silverlight.C1MessageBoxIcon
  5. Imports Newtonsoft.Json
  6. Imports Newtonsoft.Json.Linq
  7. Imports System.Windows.forms
  8. Namespace ExcelViewVBDotnet
  9.    Public Class StandardInterface
  10.        '预留位置1
  11.        '预留位置2
  12.        Dim EV As SpreadsheetGear.Windows.Controls.WorkbookView,AW As SpreadsheetGear.IWorkbook,Range As SpreadsheetGear.IRange
  13.        Public Sub Workbook_Open(OldRoot As Object,NewRoot As Object,Excel As SpreadsheetGear.Windows.Controls.WorkbookView)
  14.            EV = Excel
  15.            Excel.GetLock()
  16.            AW = Excel.ActiveWorkbook
  17.            Range = AW.ActiveWorksheet.Range
  18.            Excel.ReleaseLock()
  19.                   
  20.                    ActiveWorkbook.WorkbookSet.GetLock()
  21.             Dim BZ As String = Range("F_3277").Text
  22.             ActiveWorkbook.ActiveWorksheet.ProtectContents = False
  23.             With Range("F_1954").Union(Range("F_1951")).Union(Range("F_2001"))
  24.                 If BZ = "人民币" Then
  25.                     .NumberFormat = "¥#,##0.00;¥-#,##0.00"
  26.                 ElseIf BZ = "美元" Then
  27.                     .NumberFormat = "$#,##0.00;-$#,##0.00"
  28.                 End If
  29.             End With
  30.             ActiveWorkbook.ActiveWorksheet.ProtectContents = False
  31.             ActiveWorkbook.WorkbookSet.ReleaseLock()
  32.                        
  33.            End Sub'打开时执行事件

  34.        Public Sub RangeSelection(sender As Object,e As SpreadsheetGear.Windows.Controls.RangeSelectionChangedEventArgs)

  35.        End Sub'单元格选择后执行的事件

  36.        Public Sub RangeChanged(sender As Object, e As SpreadsheetGear.Windows.Controls.RangeChangedEventArgs) Implements Interfaces.IExcelWorkBook.RangeChanged

  37.                
  38.                             If e.Range.Intersect(Range("F_3277")) IsNot Nothing Then
  39.                 Dim BZ As String = Range("F_3277").Text
  40.                 ActiveWorkbook.ActiveWorksheet.ProtectContents = False
  41.                 With Range("F_1954").Union(Range("F_1951")).Union(Range("F_2001"))
  42.                     If BZ = "人民币" Then
  43.                         .NumberFormat = "¥#,##0.00;¥-#,##0.00"
  44.                     ElseIf BZ = "美元" Then
  45.                         .NumberFormat = "$#,##0.00;-$#,##0.00"
  46.                     End If
  47.                 End With
  48.                 ActiveWorkbook.ActiveWorksheet.ProtectContents = False
  49.             End If
  50.                        
  51.         End Sub '单元格编辑完成后执行事件

  52.        Public Sub ButtunClick(sender As Object,e As SpreadsheetGear.Windows.Controls.ShapeActionEventArgs)

  53.        End Sub'按钮/标签点击事件

  54.        Public Sub FollowHyperlink(sender As Object)

  55.        End Sub '暂不支持

  56.    End Class
  57. '  注:除事件字眼下可以自定义代码外的所有代码不允许改动,否则编译将有可能失败。
  58. End Namespace
复制代码


电话/微信:18049989370 QQ:857188287
最新版本命令树中已经增加了对设置单元格格式的支持,可以不用写VBA直接通过命令树来设置。
电话/微信:18049989370 QQ:857188287

精彩评论2

  1. Imports SpreadsheetGear
  2. Imports C1.Silverlight
  3. Imports C1.Silverlight.C1MessageBoxButton
  4. Imports C1.Silverlight.C1MessageBoxIcon
  5. Imports Newtonsoft.Json
  6. Imports Newtonsoft.Json.Linq
  7. Imports System.Windows.forms
  8. Namespace ExcelViewVBDotnet
  9.    Public Class StandardInterface
  10.        '预留位置1
  11.        '预留位置2
  12.        Dim EV As SpreadsheetGear.Windows.Controls.WorkbookView,AW As SpreadsheetGear.IWorkbook,Range As SpreadsheetGear.IRange
  13.        Public Sub Workbook_Open(OldRoot As Object,NewRoot As Object,Excel As SpreadsheetGear.Windows.Controls.WorkbookView)
  14.            EV = Excel
  15.            Excel.GetLock()
  16.            AW = Excel.ActiveWorkbook
  17.            Range = AW.ActiveWorksheet.Range
  18.            Excel.ReleaseLock()
  19.                   
  20.                    ActiveWorkbook.WorkbookSet.GetLock()
  21.             Dim BZ As String = Range("F_3277").Text
  22.             ActiveWorkbook.ActiveWorksheet.ProtectContents = False
  23.             With Range("F_1954").Union(Range("F_1951")).Union(Range("F_2001"))
  24.                 If BZ = "人民币" Then
  25.                     .NumberFormat = "¥#,##0.00;¥-#,##0.00"
  26.                 ElseIf BZ = "美元" Then
  27.                     .NumberFormat = "$#,##0.00;-$#,##0.00"
  28.                 End If
  29.             End With
  30.             ActiveWorkbook.ActiveWorksheet.ProtectContents = False
  31.             ActiveWorkbook.WorkbookSet.ReleaseLock()
  32.                        
  33.            End Sub'打开时执行事件

  34.        Public Sub RangeSelection(sender As Object,e As SpreadsheetGear.Windows.Controls.RangeSelectionChangedEventArgs)

  35.        End Sub'单元格选择后执行的事件

  36.        Public Sub RangeChanged(sender As Object, e As SpreadsheetGear.Windows.Controls.RangeChangedEventArgs) Implements Interfaces.IExcelWorkBook.RangeChanged

  37.                
  38.                             If e.Range.Intersect(Range("F_3277")) IsNot Nothing Then
  39.                 Dim BZ As String = Range("F_3277").Text
  40.                 ActiveWorkbook.ActiveWorksheet.ProtectContents = False
  41.                 With Range("F_1954").Union(Range("F_1951")).Union(Range("F_2001"))
  42.                     If BZ = "人民币" Then
  43.                         .NumberFormat = "¥#,##0.00;¥-#,##0.00"
  44.                     ElseIf BZ = "美元" Then
  45.                         .NumberFormat = "$#,##0.00;-$#,##0.00"
  46.                     End If
  47.                 End With
  48.                 ActiveWorkbook.ActiveWorksheet.ProtectContents = False
  49.             End If
  50.                        
  51.         End Sub '单元格编辑完成后执行事件

  52.        Public Sub ButtunClick(sender As Object,e As SpreadsheetGear.Windows.Controls.ShapeActionEventArgs)

  53.        End Sub'按钮/标签点击事件

  54.        Public Sub FollowHyperlink(sender As Object)

  55.        End Sub '暂不支持

  56.    End Class
  57. '  注:除事件字眼下可以自定义代码外的所有代码不允许改动,否则编译将有可能失败。
  58. End Namespace
复制代码


电话/微信:18049989370 QQ:857188287
最新版本命令树中已经增加了对设置单元格格式的支持,可以不用写VBA直接通过命令树来设置。
电话/微信:18049989370 QQ:857188287
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则  允许回帖邮件提醒楼主

快表软件是国内较早研究表格类软件开发平台的团队之一,迄今已有十多年的行业经验.致力于为企事业单位提供实用可靠的数字化平台。
  • 微信公众号

  • 微信小商店

  • 微信客服

  • Powered by Discuz! X3.4 | Copyright © 2022-2024, XiRong Soft. | 快表软件
  • 沪ICP备13033196号 | 营业执照 |上海西戎软件科技有限公司|沪公网安备31011502002146号|沪ICP备13033196号 |