`
tyl
  • 浏览: 50392 次
  • 性别: Icon_minigender_2
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

VB实现上下标

阅读更多

Module Module1

    Private suptable As Hashtable
    Private subtable As Hashtable

    Sub Main(ByVal Args() As String)
        implementSubAndSup(Args(0))
    End Sub

    Private Sub implementSubAndSup(ByVal excelName As String)
        If (excelName.Length > 0) Then
            Dim excelApp As Microsoft.Office.Interop.Excel.Application
            Dim excelBook As Microsoft.Office.Interop.Excel.Workbook
            Dim excelsheet As Microsoft.Office.Interop.Excel.Worksheet '定义工作表类

            Try
                excelBook = New Microsoft.Office.Interop.Excel.Workbook()
            Catch ex As Exception

            End Try

            excelApp = CreateObject("Excel.Application")
            excelApp.DisplayAlerts = False
            Try
                excelBook = excelApp.Workbooks.Open(excelName)
            Catch ex As Exception
                '  System.Console.WriteLine("excelBook......." + ex.Message)
            End Try
            excelApp.Visible = False

            Dim m As Integer
            Dim sheetCount As Integer
            Try
                sheetCount = excelBook.Worksheets.Count
            Catch ex As Exception

            End Try

            If (sheetCount > 0) Then
                For m = 1 To sheetCount
                    Try
                        excelsheet = New Microsoft.Office.Interop.Excel.Worksheet()
                    Catch ex As Exception

                    End Try

                    Try
                        excelsheet = excelBook.Worksheets(m)
                        excelsheet.Select()
                    Catch ex As Exception
                        '    System.Console.WriteLine("excelsheet......" + ex.Message)
                    End Try

                    Dim row As Integer
                    Dim col As Integer
                    Try
                        row = excelsheet.UsedRange.Rows.Count()
                        col = excelsheet.UsedRange.Columns.Count()
                    Catch ex As Exception

                    End Try

                    Dim i As Integer
                    Dim j As Integer
                    For i = 1 To row
                        For j = 2 To 6   '1-6列的单元格
                            Dim cellvalue As String
                            Try
                                cellvalue = New String(excelApp.Cells(i, j).value.ToString())
                                If ((cellvalue.IndexOf("{") >= 0)) Then
                                    If ((cellvalue.IndexOf("}") >= 0)) Then
                                        Dim range As Microsoft.Office.Interop.Excel.Range
                                        suptable = New Hashtable
                                        subtable = New Hashtable
                                        setSupAndSub(cellvalue, excelApp, i, j)

                                        If (suptable.Keys.Count > 0) Then
                                            If (subtable.Keys.Count > 0) Then
                                                If (subtable.Keys.Count = suptable.Keys.Count) Then
                                                    range = excelApp.Cells(i, j)
                                                    range.Select()

                                                    Dim supkeys As IEnumerator
                                                    supkeys = suptable.Keys.GetEnumerator()

                                                    Dim subkeys As IEnumerator
                                                    subkeys = subtable.Keys.GetEnumerator()

                                                    Dim k As Integer
                                                    For k = 0 To suptable.Keys.Count
                                                        supkeys.MoveNext()
                                                        Dim beginIndex As Integer
                                                        Dim supValue As String

                                                        beginIndex = supkeys.Current
                                                        supValue = suptable.Item(beginIndex).ToString

                                                        With range.Characters(Start:=beginIndex + 1, Length:=supValue).Font
                                                            .Superscript = True
                                                            .Subscript = False
                                                        End With

                                                        subkeys.MoveNext()
                                                        Dim endIndex As Integer
                                                        Dim subValue As String

                                                        endIndex = subkeys.Current
                                                        subValue = subtable.Item(endIndex)

                                                        With range.Characters(Start:=endIndex + 1, Length:=subValue).Font
                                                            .Superscript = False
                                                            .Subscript = True
                                                        End With
                                                    Next

                                                End If

                                            End If

                                        End If

                                    End If

                                End If

                            Catch ex As Exception
                                '    System.Console.WriteLine("cell......" + ex.Message)
                            End Try

                        Next
                    Next
                Next
            End If
            '工作表保存:

            Try
                If Not excelApp.ActiveWorkbook.Saved Then
                    excelApp.SaveWorkspace()

                End If
                Dim xlSheet1 As Microsoft.Office.Interop.Excel.Worksheet
                xlSheet1 = excelBook.Worksheets(1)
                xlSheet1.Select()
                excelApp.Workbooks.Close()
            Catch ex As Exception

            End Try
        End If
    End Sub

 

'例如解析【叶片长度L{0,-0.05}】这种格式的值,0代表上标,-0.05代表下标。将来显示的结果是


    Private Sub setSupAndSub(ByVal cellvalue As String, ByVal excelApp As Microsoft.Office.Interop.Excel.Application, ByVal i As Integer, ByVal j As Integer)
        excelApp.DisplayAlerts = False
        If ((cellvalue.IndexOf("{") >= 0)) Then
            Dim beginIndex As Integer
            Dim endIndex As Integer
            Dim supAndsubInfo As String
            Dim supValue As String
            Dim subValue As String

            beginIndex = cellvalue.IndexOf("{")
            endIndex = cellvalue.IndexOf("}")
            supAndsubInfo = New String(cellvalue.Substring(cellvalue.IndexOf("{") + 1, endIndex - beginIndex - 1))

            If (supAndsubInfo.IndexOf(",") >= 0) Then
                supValue = supAndsubInfo.Substring(0, supAndsubInfo.IndexOf(","))
                subValue = supAndsubInfo.Substring(supAndsubInfo.IndexOf(",") + 1, supAndsubInfo.Length - supAndsubInfo.IndexOf(",") - 1)
                If (supValue.Length = 0) Then
                    supValue = 0
                End If
                If (subValue.Length = 0) Then
                    subValue = 0
                End If

                Dim info As String
                info = cellvalue.Substring(cellvalue.IndexOf("}") + 1)
                excelApp.Cells(i, j).Value = (cellvalue.Substring(0, cellvalue.IndexOf("{"))) + supValue + subValue + info

                Dim secondcellvalue As String
                secondcellvalue = (cellvalue.Substring(0, cellvalue.IndexOf("{"))) + supValue + subValue + info

                suptable.Add(beginIndex, supValue.Length)
                subtable.Add(beginIndex + supValue.Length, subValue.Length)

                If (secondcellvalue.IndexOf("{") >= 0) Then
                    If (secondcellvalue.IndexOf("}") >= 0) Then
                        setSupAndSub(secondcellvalue, excelApp, i, j)
                    End If
                End If
            End If
        End If
    End Sub

End Module

  • 大小: 3 KB
分享到:
评论

相关推荐

    VB在RichTextBox中实现上下标

    首先,我们要明白上下标是通过特定的文本格式化代码来实现的。在`RichTextBox`中,我们可以使用RTF(Rich Text Format)语言来控制文本的显示方式。RTF是一种标记语言,用于描述文本的格式,包括字体、颜色、大小...

    VB 数组下标说明实例

    在VB中,数组的下标默认从0开始,但这可以通过设置Option Base语句来改变。 ### 数组的声明 在VB中,声明数组的基本语法是这样的: ```vb Dim 数组名(下界 To 上界) As 数据类型 ``` 例如,如果你想要声明一个...

    VB6.0实现彩票36选7选号程序.rar

    VB6.0实现彩票36选7选号程序,功能:生成14个过滤条件值保存DB,查询指定期的前X期开出的个数,七期随机选号法,统计每个号码出球规律,"随机选下注数据,从选定号码中遍历组合,在选中号码列表中继续筛选等。...

    VB6批量动态控件数组事件响应

    本话题将深入探讨如何实现VB6批量动态控件数组及其事件响应。 首先,我们要了解VB6中的控件数组。控件数组是由一组相同类型的控件组成,它们共享同一个名称,但通过索引来区分。例如,我们可以创建一个名为"txtBox...

    一个基于VB与MATLAB实验系统的设计与实现

    ### 一个基于VB与MATLAB实验系统的设计与实现 #### 概述 本文介绍了一种结合Visual Basic(VB)与MATLAB的混合编程方法来设计并实现了一个虚拟实验系统——《高等数学应用问题与数字信号处理虚拟实验系统》。该...

    VB 矩阵按列存入一维数组

    本篇将详细介绍如何在VB中实现矩阵按列存入一维数组的步骤。 首先,理解基本概念。矩阵是一个二维数据结构,而一维数组则是一条线性存储的数据结构。在VB中,矩阵通常以二维数组的形式表示,而一维数组则是一系列...

    线性规划VB代码

    以下是一个使用VB实现线性规划的示例,它基于单纯形法。 在VB代码中,首先定义了几个动态数组,例如`a()`、`c()`、`b()`等,这些数组分别用来存储线性规划问题的系数矩阵、目标函数系数、约束条件的右端常数以及基...

    最近写的VB笔记哦 不看后悔

    在VB中,通过`Option Base`语句可以设置数组下标的起始值,默认情况下,数组下标是从0开始的。如果希望数组下标从1开始,则可以在文件开头加入`Option Base 1`语句。 ```vb Option Base 0 ' 数组下标从0开始 Option...

    VB 简单的抽奖小程序 开源 VB抽奖代码.zip

    VB 提供的Form设计器使得创建用户界面变得直观,你可以通过拖放控件(如Label、Button、ListBox等)到窗体上,并设置其属性,如文字、颜色、大小等,以实现抽奖程序的界面布局。 6. **消息框与对话框**: MsgBox...

    成都理工大学-VB-试题库(含答案).pdf

    5. VB中判断两个数中的大数可以通过多种方式实现。选项中不正确的写法是“Max=xIfy>=xThenMax=y”,正确的写法应该是“Max=IIF(x>y,x,y)”或者“If x>y Then Max=x Else Max=y”。 6. 在VB中,数学表达式3≤x的逻辑...

    vb二级复习资料

    13. **计算e的值**:利用泰勒级数或欧拉公式计算自然对数e的近似值,需要掌握数学知识并用VB实现循环累加。 14. **删除数组元素**:从数组中移除特定值,可能需要复制和重构数组,或使用ArrayList等动态数据结构。 ...

    基于VB与MATLAB的数学与数字信号处理实验系统的设计与实现.pdf

    具体实现上,动态数据交换技术(DDE机制)用于在VB应用程序和MATLAB之间通过会话实现动态交换数据。文档中举例说明了如何使用DDE机制,通过VB与MATLAB混合编程来解决数学问题,例如绘制矩阵A的列对应下标的图形。 ...

    VB_NET和VB6_0的比较

    通过上述分析可以看出,VB.NET相较于VB6.0有了巨大的飞跃,不仅仅是在语法和语言特性上的改进,更重要的是它为开发者提供了更加强大、灵活且高效的开发工具。无论是对于桌面应用还是Web应用,VB.NET都展现出了极大的...

    怎样用vb读取文件数据txt

    #### VB代码实现 接下来,我们将详细介绍如何编写VB代码来读取这种格式的TXT文件,并提取指定`i`和`j`位置的`data`值。 1. **初始化变量**: ```vb Dim a As Variant, str1 As String, dt() As Double, k As ...

    二级vb公共基础知识

    - **事件驱动编程**:VB中的控件可以响应用户操作,如Click事件,编写事件处理程序实现交互。 3. **控制结构** - **顺序结构**:代码按行顺序执行。 - **选择结构**:`If...Then...Else`用于条件判断,决定执行...

    vb接金币小游戏代码

    根据提供的VB代码片段来看,这段代码实现了一个简单的接金币游戏。接下来将对代码中的关键部分进行解析,并从中提炼出相关的知识点。 ### 关键知识点 #### 1. 变量声明与初始化 ```vb Dim time, sum, summ(4) As ...

    (VB源码)让RichTextBox文本框支持程序间的拖放操作

    使用RichTextLib实现的相关VisualBasic例子,让RichTextBox文本框支持程序间的拖放操作,也就是可以把其它窗体上选择的文字直接拖放至VB程序窗口的RichTextBox文本框中,经过本例的实现,你就可以为你的VB程序也添加...

    随机抽奖(VB6.0源代码编写)

    在上述代码中,`Int(Rnd() * n)` 会生成一个0到n-1之间的整数,作为数组下标,从而随机选取一个参与者。如果需要抽取多个获奖者,可以将这个过程放在循环中,但要注意避免重复抽到同一人。 除了基本的随机抽奖,还...

    vb.net 教学课件

    VB.NET 是一种面向对象的编程语言,用于...综上所述,VB.NET的复合数据类型提供了处理复杂数据结构的能力,使得开发者能够有效地管理大量数据和实现更复杂的逻辑。理解和熟练运用这些概念对于进行VB.NET编程至关重要。

Global site tag (gtag.js) - Google Analytics