• 締切済み

Right関数 と Space関数

数式を入力させて、それらを出力するコードを作っているのですが、 Right関数 と Space関数を用いて、出力させる最も大きい桁数の数字を 右揃えでとして表示するにはどうすればいいですか。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

今過渡期なんだから、VB&かVB.NET系か質問に書くこと。 >も大きい桁数の数字を 右揃えでとして表示するにはどうすればいいですか は判りにくい。具体例を書くこと。 >数式を入力させて、それらを出力するコードを作っているのですが、 これも何のことだか。 数値から文字列で右詰めにして出したいのか。 VB&系統だが Sub test01() a = 1235 b = String(10, "*") MsgBox b Mid(b, 10 - Len(a) + 1, Len(a)) = Trim(Str(a)) MsgBox b End Sub 見やすいように*にして有るが、スペースに変えること。 こんなことか?

vb_vb
質問者

お礼

丁寧な回答ありがとうございます。 今度からは、質問の内容を具体的に記すように心がけます。

すると、全ての回答が全文表示されます。
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

数式/望む結果の具体例、開発環境の提示がありません。 例えば6桁で揃うようにパディングするには、   n = 6   sNum = "123"   sNum = Right$(Space$(n) & sNum, n) となります。あとは与えられた数式から正規表現等で数値部分を取り出し、 置換するだけです。VB6/VBA ならこんな感じになるのかな・・ ご参考までに。 Sub sample()   Debug.Print "[" & PaddingFormula("1+12345=12346") & "]" End Sub Public Function PaddingFormula(ByVal sFormula As String) As String   Const MATCHING_PATTERN = "(\d+)"      Static reg   As Object ' RegExp   Dim mc     As Object ' MatchCollection   Dim m      As Object ' Match   Dim nMaxDigit  As Long   Dim sPaddingNum As String      If reg Is Nothing Then     Set reg = CreateObject("VBScript.RegExp")   End If   reg.Global = True   reg.Pattern = MATCHING_PATTERN      Set mc = reg.Execute(sFormula)       ' 最大桁数を調べます   nMaxDigit = 0   For Each m In mc     If Len(m.Value) > nMaxDigit Then       nMaxDigit = Len(m.Value)     End If   Next      ' マッチした数値をSPでパディングしたものと置換します   For Each m In mc     sPaddingNum = m.Value     If Len(sPaddingNum) < nMaxDigit Then       sPaddingNum = Space$(nMaxDigit) & CStr(m.Value) ' ※       sPaddingNum = Right$(sPaddingNum, nMaxDigit)  ' ※     End If     ' Replace は名前付き引数 Count に 1 を渡すこと     sFormula = Replace$(Expression:=sFormula, _               Find:=m.Value, _               Replace:=sPaddingNum, _               Count:=1)   Next   PaddingFormula = sFormula End Function

すると、全ての回答が全文表示されます。

関連するQ&A