2016-10-29 48 views
1

在VBA Excel宏我使用,我有以下代碼:混合標在一個字符串

For k = MinDeg To MaxDeg 
     OutputStr = Trim(OutputStr & "a" & Str(k) & " = " & _ 
        Str(MyCoe) & " ± " & _ 
        Str(MyErr) & Chr(10)) 
Next k 

其中「MyCoe」和「myerr中」中給出的數字,而「minDeg」和「MaxDeg」是整數。

我的問題是:

我怎樣才能使 「STR(K)」 出現在outputstr爲文本?

+1

放置在一個單元格中未格式化字符串,然後解析細胞應用正確的字體到'Characters'以下各* A *。 –

+0

這取決於**你希望它顯示爲下標 – Slai

回答

0

首先,我跑這個簡單的mod代碼:

Sub WhatEverr() 
    mindeg = 10 
    maxdeg = 13 
    mycoe = 3 
    myerr = 5 
    For k = mindeg To maxdeg 
      outputstr = Trim(outputstr & "a" & Str(k) & " = " & _ 
         Str(mycoe) & " ± " & _ 
         Str(myerr) & Chr(10)) 
    Next k 
    Range("A1").Value = outputstr 
End Sub 

A1得到這個:

enter image description here

然後我運行:

Sub formatcell() 
    Dim i As Long, L As Long, rng As Range 
    Dim s As String 

    Set rng = Range("A1") 
    s = rng.Value 
    L = Len(s) 

    For i = 1 To L 
     ch = Mid(s, i, 1) 
     If ch = "a" Then 
      rng.Characters(Start:=i + 2, Length:=2).Font.Subscript = True 
     End If 
    Next i 
End Sub 

要應用格式:

enter image description here

在Excel中,這種類型的字符格式是Range對象的屬性。您不會像在HTML中那樣將其構建到字符串中。

1

如果Unicode在您的環境中可用,則另一個選項是對Str(K)使用下標的Unicode字符。做一些修改Gary的學生守則,以獲得在A1輸出:


Option Explicit 
Sub foo() 
Dim K As Long 
Const MinDeg As Long = 10 
Const MaxDeg As Long = 13 
Dim sK As String, I As Long 
Const MyCoe As Long = 3 
Const MyErr As Long = 5 
Dim OutPutStr As String 

For K = MinDeg To MaxDeg 

    sK = "" 
    For I = 1 To Len(CStr(K)) 
     sK = sK & ChrW(832 & Mid(CStr(K), I, 1)) 
    Next I 

     OutPutStr = Trim(OutPutStr & "a" & sK & " = " & _ 
        Str(MyCoe) & " ± " & _ 
        Str(MyErr) & Chr(10)) 

Next K 

Cells(1, 1) = OutPutStr 

End Sub 

注意,下標值也出現在公式欄。

enter image description here