|
▼ichinose さん:
ありがとうございます
>>Q2
で解説いただいた内容は
Mid 関数
文字列から指定した文字数分の文字列を返します。
を踏まえて
値 右
文字列 左
MIDで文字列 左
'+で数値 右
'&で文字 左
は了解ですが下記わかりません
= は参照先が数値なら 右 、文字列なら 左
でした
いまさらながらですが、動作としてわかりましたが
この動作のhelpみたいなものはあるのでしょうか
調べてみましたが見つかりませんでした
単純一般機能として理解すればいいような気もしますが・・・・
>>B8が指数で左寄せ
>これは、??? B1は、文字列ですよね?
>(再現できないので、さらに再現手順を詳細に記述してください)
ですが
下記で再現できます
C4が指数表示で右寄せ
C7が指数表示なのに左寄せとなっています
ただ 参照先が
C4は、MID関数式
C7は、等号式?
の違いがありますが・・・・・
何か有りましたらよろしくお願い致します
Sub cell_set2()
Cells.Delete Shift:=xlUp
Range("B2").Value = "V2_I173 35051000100001000100002000000000402"
Range("C2").Formula = "= MID(B2, FIND("" "", B2)+1, 100)"
Range("C3").Formula = "=C2"
Range("C4").Formula = "=C2+1"
Range("B6").NumberFormatLocal = "@"
Range("B6").Value = "35051000100001000100002000000000402"
Range("C6").Formula = "=B6"
Range("C7").Formula = "=B6+1"
Columns("B:C").EntireColumn.AutoFit
Range("B2").Select
End Sub
足し算 引き算 の コード ありがとうございます
>これは、昔やった縦書きの足し算(加法の場合)をVBAでコード化するのですよ
やっと文字列操作の方法がイメージがつかめましたが
ムム〜 このタイプのコードなんでか苦手で自力ではかけません
作成し始めるといつも何をしているか迷子になってギブアップみたいな・・
何でなんでしょ
一応動作はわかるのですが・・多分自力では書けない・・
フローチャート?が書けるようになればいいのかな?
(自慢ではありませんが書いたことはありません)
アホだからでもいいですが、何かアドバイス頂けると一歩進めるような気がします
なにかありましたらよろしくお願いします
後、
足し算の If g3 > 0 Then
の意味が下記で確認してもなぜいるのかよくわからないのですが・・・
アドバイス頂けるとうれしいです
よろしくお願いいたします
>その時も平方根の計算をシュミレートすれば という投稿を
>したと思いました
▼【32873】マクロで平方根を・・・・・
tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=ntr;tree=32873;id=excel
ありがとうございます
別途勉強させて頂きます
初心者さんの場合は同じような人がいるかもしれませんので
一応下記書いてみました
頂いたコードを下記のようにしてステップ実行すると動作だけはわかると思います
足し算
Option Explicit
'================================================================
Sub test()
Dim s1 As String
Dim s2 As String
s1 = "123"
s2 = "29"
[a1].Value = "'" & stradd(s1, s2)
s1 = "3505100010000100010000200000402111111111"
s2 = "35"
[a2].Value = "'" & stradd(s1, s2)
End Sub
'=================================================================
Function stradd(ByVal str1 As String, str2 As String) As String
Dim l1 As Long
Dim l2 As Long
Dim g0 As Long
Dim g1 As Long
Dim g2 As Long
Dim g3 As Long
l1 = Len(str1)
l2 = Len(str2)
g3 = 0
Do While l1 > 0 Or l2 > 0
If l1 > 0 Then g1 = Val(Mid(str1, l1, 1)) Else g1 = 0
If l2 > 0 Then g2 = Val(Mid(str2, l2, 1)) Else g2 = 0
g0 = g1 + g2 + g3
g3 = g0 \ 10
stradd = CStr((g0 Mod 10)) & stradd
l1 = l1 - 1
l2 = l2 - 1
Debug.Print stradd 'ブレークポイントセット
Loop
If g3 > 0 Then 'ブレークポイントセット
Debug.Print
Debug.Print CStr(g3)
Debug.Print stradd
stradd = CStr(g3) & stradd
Else 'ブレークポイントセット
Debug.Print
Debug.Print CStr(g3)
Debug.Print stradd
End If
End Function
引き算
Option Explicit
'===================================================================
Sub test2()
Dim s1 As String
Dim s2 As String
s1 = "131"
s2 = "145"
[a1].Value = "'" & strsub(s1, s2)
s1 = "3505100010000100010000200000402111111111"
s2 = "35"
[a2].Value = "'" & strsub(s1, s2)
End Sub
'=================================================================
Function strsub(ByVal str1 As String, ByVal str2 As String) As String
Dim l1 As Long
Dim l2 As Long
Dim g0 As Long
Dim g1 As Long
Dim g2 As Long
Dim g3 As Long
Dim wk As String
Dim hugo As String
g0 = mystrcomp(str1, str2)
hugo = ""
If g0 = -1 Then
wk = str1
str1 = str2
str2 = wk
hugo = "-"
End If
If g0 = 0 Then
strsub = "0"
Else
l1 = Len(str1)
l2 = Len(str2)
g3 = 0
Do While l1 > 0 Or l2 > 0
If l1 > 0 Then g1 = Val(Mid(str1, l1, 1)) Else g1 = 0
If l2 > 0 Then g2 = Val(Mid(str2, l2, 1)) Else g2 = 0
g0 = g1 - g2 - g3
If g0 < 0 Then
g0 = 10 + g0
g3 = 1
Else
g3 = 0
End If
strsub = CStr(g0) & strsub
l1 = l1 - 1
l2 = l2 - 1
Debug.Print strsub 'ブレークポイントセット
Loop
Debug.Print
For g0 = 1 To Len(strsub)
Debug.Print Mid(strsub, g0, 1)
If Mid(strsub, g0, 1) <> "0" Then
strsub = Mid(strsub, g0)
Exit For
End If
Next
strsub = hugo & strsub
Debug.Print
Debug.Print strsub 'ブレークポイントセット (str2>str1でも試す)
End If
End Function
'=======================================================================
Function mystrcomp(ByVal strnum1 As String, ByVal strnum2 As String) As Long
' mystrcomp 1 strnum1>strnum2
' 0 strnum1=strnum2
' -1 strnum1<strnum2
Dim x As String
Dim y As String
x = Space(Application.Max(Len(strnum1), Len(strnum2)))
y = x
Rset x = strnum1
Rset y = strnum2
mystrcomp = StrComp(x, y)
End Function
|
|