Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


12394 / 76734 ←次へ | 前へ→

【69862】Re:初心者ですみません
発言  momo  - 11/9/8(木) 10:47 -

引用なし
パスワード
   ▼はじめてのVBA さん:
はじめまして。

厳密に考えると、もっともっと条件が沢山ありそうですが・・・
とりあえず叩き台として

Private Sub Worksheet_Change(ByVal Target As Range)
Dim myFml As String
Dim myPlc As Integer
Dim Ans  As Double
If Not Application.Intersect(Target, Me.Range("A3:B30")) Is Nothing Then
 With Target.EntireRow
  myFml = .Cells(1).Value
  myPlc = .Cells(2).Value
  Ans = Application.Evaluate(myFml)
  Application.EnableEvents = False
  If IsError(Ans) Then
   .Cells(3).Value = "数式を確認"
   .Cells(4).Value = "Err"
  Else
   RepFormula .Cells(3), myFml
   .Cells(4).NumberFormatLocal = IIf(myPlc = 0, "0", "0." & String(myPlc, "0"))
   .Cells(4).Value = Ans
  End If
  Application.EnableEvents = True
 End With
End If
End Sub

Private Sub RepFormula(myRng As Range, myStr As String)
Dim myReg As Object
Dim i   As Long
myStr = StrConv(myStr, vbLowerCase)
myStr = Replace(myStr, "+", "+")
myStr = Replace(myStr, "-", "−")
myStr = Replace(myStr, "*", "×")
myStr = Replace(myStr, "/", "÷")
myStr = Replace(myStr, "pi()", "π")
myStr = Replace(myStr, "sqrt", "√")
With CreateObject("VBScript.RegExp")
 .Global = True
 .Pattern = "\^-*\d+"
 Set myReg = .Execute(myStr)
 myStr = Replace(myStr, "^", "")
 myRng.Value = myStr
 For i = 1 To myReg.Count
  With myReg.Item(i - 1)
   myRng.Characters(.firstindex + 2 - i, .Length - 1).Font.Superscript = True
  End With
 Next i
End With
End Sub

7 hits

【69861】初心者ですみません はじめてのVBA 11/9/7(水) 17:56 質問
【69862】Re:初心者ですみません momo 11/9/8(木) 10:47 発言
【69863】Re:初心者ですみません はじめてのVBA 11/9/8(木) 12:10 質問
【69864】Re:初心者ですみません momo 11/9/8(木) 13:11 発言
【69865】Re:初心者ですみません はじめてのVBA 11/9/8(木) 17:44 お礼

12394 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free