找回密码
 加入
搜索
查看: 3792|回复: 8

[系统综合] 在Excel操作时怎样实现上下标的输入【已解决】

  [复制链接]
发表于 2013-4-9 10:33:30 | 显示全部楼层 |阅读模式
本帖最后由 jtw 于 2013-4-9 21:35 编辑

在Excel操作时怎样实现上下标的输入,如10#应该用什么函数将#写成上标,谢谢。
发表于 2013-4-9 10:53:24 | 显示全部楼层
要求太高了吧。EXCLE主要是用于数据管理的啊
发表于 2013-4-9 10:56:07 | 显示全部楼层
现实中 可以用ALT+0177 ALT+0178来实现
 楼主| 发表于 2013-4-9 10:59:55 | 显示全部楼层
VBA是可以实现的,只是不会转成au3
 楼主| 发表于 2013-4-9 11:20:42 | 显示全部楼层
本帖最后由 jtw 于 2013-4-9 11:29 编辑

这段是vba的代码:
Sub TEST()
     Columns("A:A").NumberFormatLocal = "@"
     Columns("A:A").TextToColumns DataType:=xlTextFormat, FieldInfo:=Array(1, 2)
     For R = 1 To [A65536].End(xlUp).Row
         Cells(R, 1).Characters(Start:=Len(Cells(R, 1)), Length:=1).Font.Superscript = True
     Next
End Sub
Sub Example()
'In Excel
    Dim i As Range, a As Integer, b As Integer
    For Each i In Selection.Cells
        a = VBA.InStr(i.Value, "[")
        b = VBA.InStr(i.Value, "]")
        If a > 0 And b > 0 Then
            i.Characters(a + 1, b - a - 1).Font.Superscript = True
        End If
    Next
End Sub
发表于 2013-4-9 20:00:19 | 显示全部楼层
提供你的au3代码看下
 楼主| 发表于 2013-4-9 20:24:48 | 显示全部楼层
本帖最后由 jtw 于 2013-4-9 20:27 编辑
#Include <EXCEL.au3>


excelTest()

Func excelTest()
        Dim $row_n=20                                           ;表格行数
        
        $xls = ObjCreate("Excel.Application")                   ; 创建excel应用程序对象
        $xls.visible=0                                          ;0-不显示。1-显示
        $obj_xls=$xls.Workbooks.Add                             ;添加新工作薄

        $xls.DisplayAlerts = False                              ;不提示操作信息
        $obj_xls.Worksheets("Sheet3").Delete                    ;删除Sheet3
        ;$oExcel.Worksheets("Sheet2").Delete                    ;删除Sheet2
        $xls.DisplayAlerts = True                               ;开启提示

        $obj_xls.Worksheets("Sheet1").Activate                      ;激活 Sheet1
        $xls_sup=$obj_xls.WorkSheets(1)                            ;第一个工作表,即Sheet1
        $xls_sup.name="交班记录1"                             ;将sheet1更名"交班记录1" 
                $xls_sup1=$obj_xls.WorkSheets(2)                            ;第二个工作表,即Sheet2
        $xls_sup1.name="交班记录2"                             ;将sheet1更名"交班记录2" 

        $xls_sup.Cells.VerticalAlignment=-4108                      ;设置垂直对齐方式为居中
        $xls_sup.Cells.HorizontalAlignment=-4108                    ;设置水平对齐方式为居中
        $xls_sup.Range("A1:D1").merge(True)                         ;合并单元格,从A1至D1
        $xls_sup.Cells(1, 1).Value ="交接班记事"                 ;置值
        $xls_sup.Rows(1).RowHeight =40                              ;设置第一行高度
        
        With $xls_sup.Range("A1:D1")
                .font.size=16                                       ;设置从A1至D1合并后单元格的字体大小
                .Range("A1:D1").font.bold=True                      ;加黑
                .Range("A1:D1").font.name="楷体_GB2312"             ;设置字体名称
        EndWith
        
;InchesToPoints函数,将英寸转为磅值。
        $xls_sup.Columns(1).ColumnWidth=$obj_xls.Application.InchesToPoints(0.07)     
        $xls_sup.Columns(2).ColumnWidth=$obj_xls.Application.InchesToPoints(0.2)
        $xls_sup.Columns(3).ColumnWidth=$obj_xls.Application.InchesToPoints(0.2)
        $xls_sup.Columns(4).ColumnWidth=$obj_xls.Application.InchesToPoints(0.2)

        $xls_sup.Rows(2).RowHeight =24
        $xls_sup.Cells(2, 1).Value ="序号"
        $xls_sup.Cells(2, 2).Value ="产品罐1"
        $xls_sup.Cells(2, 3).Value ="产品罐2"
        $xls_sup.Cells(2, 4).Value ="产品罐3"
                $xls_sup.Cells(3, 2).Value ="10#";[b]这里的#号怎样变成上标
                $xls_sup.Cells(3, 3).Value ="12#,21#";;[b]这里的#号怎样变成上标
        
        $xls_sup.Range("A2:D"&($row_n+2)).Borders(11).LineStyle=1
        $xls_sup.Range("A2:D"&($row_n+2)).Borders(12).LineStyle=1
        $xls_sup.Range("A2:D"&($row_n+2)).Borders(7).LineStyle=1
        $xls_sup.Range("A2:D"&($row_n+2)).Borders(7).Weight=3
        $xls_sup.Range("A2:D"&($row_n+2)).Borders(8).LineStyle=1
        $xls_sup.Range("A2:D"&($row_n+2)).Borders(8).Weight=3
        $xls_sup.Range("A2:D"&($row_n+2)).Borders(9).LineStyle=1
        $xls_sup.Range("A2:D"&($row_n+2)).Borders(9).Weight=3
        $xls_sup.Range("A2:D"&($row_n+2)).Borders(10).LineStyle=1
        $xls_sup.Range("A2:D"&($row_n+2)).Borders(10).Weight=3
        
        For $i=1 To $row_n
                $xls_sup.Rows($i+2).RowHeight =24
                $xls_sup.Rows($i+2).HorizontalAlignment=-4108
                $xls_sup.Rows($i+2).VerticalAlignment=-4108
                $xls_sup.Cells($i+2, 1).Value =$i
        Next
    
        
       
        $obj_xls.Windows(1).DisplayGridlines=False                ;网格线。true-显示;false-不显示
        $obj_xls.Windows(1).DisplayHeadings = False               ;行号列标。true-显示;false-不显示
         $obj_xls.SaveAs(@WorkingDir&"\test.xls")                  ;另存为test.xls
        $obj_xls.Save                                             ;保存
        $xls.quit                                                 ;over

EndFunc
$xls_sup.Cells(3, 2).Value ="10#";这里的#号怎样变成上标
$xls_sup.Cells(3, 3).Value ="12#,21#";;这里的#号怎样变成上标
发表于 2013-4-9 20:54:45 | 显示全部楼层
$excel=ObjCreate("excel.application")
$excel.visible=True
$wb=$excel.workbooks.add
With $wb.activesheet
        .Cells(3, 2).Value ="10# 111#  123333###"
        $n=1
        While StringInStr(.cells(3,2).value,"#",0,1,$n)>0
                .Cells(3, 2).characters(StringInStr(.cells(3,2).value,"#",0,1,$n),1).font.superscript=true
                $n=StringInStr(.cells(3,2).value,"#",0,1,$n)+1
        WEnd
EndWith
给个例子你,不过这类操作比较耗时,建议大量操作的话关闭屏幕刷新,完成后再打开
 楼主| 发表于 2013-4-9 21:30:45 | 显示全部楼层
本帖最后由 jtw 于 2013-4-9 21:34 编辑

谢谢楼上的,问题解决了。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-11-17 23:37 , Processed in 0.079341 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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