在Excel操作时怎样实现上下标的输入【已解决】
本帖最后由 jtw 于 2013-4-9 21:35 编辑在Excel操作时怎样实现上下标的输入,如10#应该用什么函数将#写成上标,谢谢。 要求太高了吧。EXCLE主要是用于数据管理的啊 现实中 可以用ALT+0177 ALT+0178来实现 VBA是可以实现的,只是不会转成au3 本帖最后由 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 .End(xlUp).Row
Cells(R, 1).Characters(Start:=Len(Cells(R, 1)), Length:=1).Font.Superscript = True
Next
End SubSub 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
提供你的au3代码看下 本帖最后由 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#";这里的#号怎样变成上标
$xls_sup.Cells(3, 3).Value ="12#,21#";;这里的#号怎样变成上标
$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#";;这里的#号怎样变成上标 $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给个例子你,不过这类操作比较耗时,建议大量操作的话关闭屏幕刷新,完成后再打开 本帖最后由 jtw 于 2013-4-9 21:34 编辑
谢谢楼上的,问题解决了。
页:
[1]