
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
質問の意図がいまひとつ掴めないので、補足をお願いします。
「*」演算子を使わずに掛け算の演算を行うユーザー関数をVBAで
作ったけど、繰り上がりの部分が思った通りに動作しない と、
いう意味でよろしいのですか?
もしそうだとしたら、そのVBAで作られたユーザー関数のロジックなり
コードをご呈示いただかないとアドバイスのしようがありません。
もし、的をはずしていたら、ごめんなさい。
この回答への補足
仰る通りです。
下のコードを授業中に作成して、先生からこれを引用して作ってください、と言われたんですが、
何をどうしたらいいのかまったくわからないんです。
頭ではわかってはいるんですが、それをどう打ち込めばいいのかいいのか…。
Sub execPlustest()
For i = 9 To 1000
jmax = i
If i > 100 Then jmax = 100
For j = 1 To jmax
If i + j <> CInt(execPlus(CStr(i), CStr(j))) Then
Cells(1, 1) = i
Cells(1, 2) = j
Cells(1, 3) = "=execPlus(A1,B1)"
Exit Sub
End If
Next j
Next i
MsgBox "OK"
End Sub
Function plus(strA As String, strB As String) As String
If Len(strA) >= Len(strB) Then
plus = execPlus(strA, strB)
Else
plus = execPlus(strB, strA)
End If
End Function
Private Function execPlus(strA As String, strB As String) As String
Dim L1 As Long
Dim L2 As Long
Dim ans As String
Dim kuriage As Integer
Dim a As Integer
Dim b As Integer
Dim wa As Integer
L1 = Len(strA)
L2 = Len(strB)
ans = ""
kuriage = 0
For i = 0 To L2 - 1
a = CInt(Mid(strA, L1 - i, 1))
b = CInt(Mid(strB, L2 - i, 1))
wa = kuriage + a + b
If wa <= 9 Then
ans = CStr(wa) & ans
kuriage = 0
Else
ans = Mid(wa, 2, 1) & ans
kuriage = 1
End If
Next i
If kuriage = 0 Then
If L1 = L2 Then
execPlus = ans
Else
execPlus = Mid(strA, 1, L1 - L2) & ans
End If
Exit Function
End If
For i = L2 To L1 - 1
a = CInt(Mid(strA, L1 - i, 1))
wa = a + kuriage
If wa <= 9 Then
ans = CStr(wa) & ans
kuriage = 0
Exit For
Else
ans = Mid(wa, 2, 1) & ans
kuriage = 1
End If
Next i
If i <= L1 - 2 Then
ans = Mid(strA, 1, L1 - i - 1) & ans
ElseIf i = L1 Then
ans = "1" & ans
End If
execPlus = ans
End Function
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vba 隣のセルに値がある行だけ関数をコピー&ペーストしたい A1 100001 A2 100002 1 2023/01/28 14:29
- Excel(エクセル) エクセルVBAでセルに表示されているとおりの数値を取得したい(時間の計算結果) 1 2022/03/30 17:52
- Excel(エクセル) エクセル・セルに数式を入力してセル指定計算 2 2023/04/21 12:46
- Excel(エクセル) Vba エクセルマクロで、 A列の、A1セルからA10セルに空白のある行を削除する、のは Range 3 2022/11/05 17:44
- Visual Basic(VBA) エクセルVBAで『A列』に新規で数値を入力し『B列』から右方向の空白セルにその値を貼り付ける方法 4 2022/11/05 08:37
- Visual Basic(VBA) VBAマクロでシートコピーした新シートにコピー元シートとの計算式の入れ方を教えて下さい。 5 2022/11/20 09:48
- Visual Basic(VBA) vbaエクセルマクロ RemoveDuplicatesについて RemoveDuplicatesを使 3 2023/02/28 01:13
- Excel(エクセル) エクセルで計算結果が0でないときのみセルを更新したい 4 2022/07/30 11:58
- Excel(エクセル) ユーザー定義について質問です。 2 2023/06/28 13:21
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
クリップボードの内容を変数に...
-
VBA 別ブックから条件に合うも...
-
エクセル チェックボックスの...
-
テーブルの境界線を消したい!!
-
Excel VBA 空白セルがあったら...
-
vbaで色付けされたセルを除外し...
-
Excel 入力規則のリストのカー...
-
VBA サンダーバードのメール自...
-
マウスを乗せたときにセルの色...
-
VBA 文字と文字の間を区切...
-
VS2003.NET(C#)からのEXCELのプ...
-
複数セルに〇印をつけるマクロ
-
iPhoneのExcelアプリで、別のシ...
-
【マクロ】A列にある、日付(本...
-
【エクセル】期限アラートについて
-
エクセル: セルの枠を超えて表示
-
エクセルでの計算式で求められ...
-
Excelに入力した個々の日付の数...
-
エクセルで表示形式の時刻の「0...
-
エクセル:マクロ「Application...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA 空白セルがあったら...
-
VBA 別ブックから条件に合うも...
-
クリップボードの内容を変数に...
-
Excel VBA コンボボックスで空...
-
Excel 入力規則のリストのカー...
-
GridViewの行選択イベントを発...
-
【VB.NET】DataGridViewセルの...
-
エクセルの取り消し線を検出す...
-
マウスを乗せたときにセルの色...
-
VBA サンダーバードのメール自...
-
【VBA】セルが空白の場合に処理...
-
Excelマクロで空白セルの大小比...
-
エクセル チェックボックスの...
-
エクセルVBA 計算範囲を変更する。
-
複数セルに〇印をつけるマクロ
-
VBA 文字列を1文字ずつ調べて"...
-
マクロについて質問です 範囲内...
-
vba、targetのRow,Colomnの値取得
-
DataGridViewでセルを結合したい
-
vbaで色付けされたセルを除外し...
おすすめ情報