初めは、以下のように書いてちゃんと計算出来ていたものを、
Private Sub TextHensaigaku_Change()
If Me.TextKariire.Value = "" Or Me.TextKikan.Value = "" Or Me.TextKinri.Value = "" Then
Me.TextHensaigaku.Value = ""
End If
Dim rate As Double, per As Integer, nper As Integer, pv As Double
rate = Me.TextKinri.Value / 12 / 100
nper = Me.TextKikan.Value * 12
pv = -1 * Me.TextKariire.Value
Me.TextHensaigaku = Application.WorksheetFunction.RoundDown(Pmt(rate, nper, pv), 0)
Me.TextHensaigaku = Format(TextHensaigaku, "#,###")
Me.TextKariire = Format(TextKariire, "#,###")
End Sub
下記のように書き換えたら、急に「rate = Me.TextKinri.Value / 12 / 100」部分で実行時エラーが出るようになりました。
その後上記の記載に戻したのですがエラーがなくなりません。
Private Sub TextHensaigaku_Change()
If Me.TextKariire.Value = "" Or Me.TextKikan.Value = "" Or Me.TextKinri.Value = "" Then
Me.TextHensaigaku.Value = ""
End If
If Me.TextBank.Value = "◯◯銀行" Then
Dim rate As Double, per As Integer, nper As Integer, pv As Double
rate = Me.TextKinri.Value / 12 / 100
nper = Me.TextKikan.Value * 12 -1
pv = -1 * Me.TextKariire.Value
Me.TextHensaigaku = Application.WorksheetFunction.RoundDown(Pmt(rate, nper, pv), 0)
Me.TextHensaigaku = Format(TextHensaigaku, "#,###")
Me.TextKariire = Format(TextKariire, "#,###")
Else
rate = Me.TextKinri.Value / 12 / 100
nper = Me.TextKikan.Value * 12
pv = -1 * Me.TextKariire.Value
Me.TextHensaigaku = Application.WorksheetFunction.RoundDown(Pmt(rate, nper, pv), 0)
Me.TextHensaigaku = Format(TextHensaigaku, "#,###")
Me.TextKariire = Format(TextKariire, "#,###")
End If
End Sub
どこがエラーの原因かわかりません。
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
お疲れ様です。
実際に使用されているものが無いのでよくわかりませんが、書き直した後、変数宣言dimの位置はおかしいと思います。
Ifの後ではなく、前に持って来てください。
書き直した後の位置ですと、else処理この時宣言が効いておりません。
宣言しなくてもエクセルは自動で判断してくれますが、自分が求める結果をだすには、宣言した方が良いです。
また、元に戻してもエラーになってしまうとの事ですが、dimもきちんと戻しましたでしょうか?
また、追記情報があれば細かくご回答できると思います。
No.2
- 回答日時:
ありがとうございます。
デバッグモードは使用できますでしょうか?
使用できましたら、それぞれの値を確認するのが良いと思います。
もしデバッグが使用できないのであれば、msgboxを使用し値を表示させて見てください。
とりあえず、TextKariire等の4つの値を表示し、計算して見てください。
Msgboxは、1個目のend ifの後に入れて頂ければと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Accessフォームで全レコードを指定のExcelのセルへ転送し印刷する方法について 2 2022/09/08 18:23
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- Visual Basic(VBA) VBAで日付入力しているのですが 4 2023/03/02 11:25
- Visual Basic(VBA) ユーザーフォームに2つのコンボボックス銀行名「ConboBox1」支店名を「ConboBox2」とし 4 2022/08/03 17:34
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- Visual Basic(VBA) VBA。複数のChangeイベントをまとめる方法 2 2022/03/31 12:03
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DATEDIF関数が機能しない理由は?
-
トークンが不正ですって出るん...
-
いつもこんなメールが来ますが...
-
DVDdecrypter 読み込み エラー
-
エラーの意味
-
ユーザーによってキューされた...
-
2件の中断されたアクション 予...
-
貼り付けできない(OpenClipboa...
-
Error invoking method: main(j...
-
マイクロソフトへエラー報告し...
-
Windowsliveメールのパスワード...
-
Twitter video tool というサイ...
-
私は教えてgooで質問することに...
-
エニメが無料で見れるサイト教...
-
ワイモバイルで無料でオペレー...
-
Spotifyって無料なんですか? ...
-
SSDをクローンしたいのですが、...
-
Deposit Filesみたいなサイトっ...
-
海外の有名エロサイトについて
-
TSUTAYAでTカードを無料でもら...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
いつもこんなメールが来ますが...
-
2件の中断されたアクション 予...
-
DATEDIF関数が機能しない理由は?
-
エラーの意味
-
トークンが不正ですって出るん...
-
C:\\Users\\ユーザ名\\Document...
-
DVD Decrypterのエラー(I/O)
-
DVDdecrypter 読み込み エラー
-
ユーザーによってキューされた...
-
ライトプロテクト
-
エラーでwebページを見られない
-
au ログイン して二段階認証を...
-
Runtime Error! と表示されます。
-
貼り付けできない(OpenClipboa...
-
Windows Media Pia...
-
オープンオフィスのエラーについて
-
80070005 Windows Update
-
SNMP Auth. failure, intruder ...
-
【エクセル】実行時エラー'13'...
-
住民基本台帳の暗証番号について
おすすめ情報
こんにちは。
恥ずかしながら初心者なので色んなコードを調べてはコピペして編集して使っていたので
Dimの位置の事が理解してませんでした。
以下のようにDimを上に持ってきましたが同じエラーが出ています。
これで何かわかりますでしょうか
よろしくお願い致します。
Private Sub TextHensaigaku_Change()
Dim rate As Double, per As Integer, nper As Integer, pv As Double
If Me.TextKariire.Value = "" Or Me.TextKikan.Value = "" Or Me.TextKinri.Value = "" Then
Me.TextHensaigaku.Value = ""
End If
If Me.TextBank.Value = "◯◯銀行" Then...(以下略)
ご丁寧にありがとうございます。
デバックモードというのは何でしょうか?
エラーが出てそのエラーの部分の背景が黄色くなっている状態のことでよろしいですか?
また、MsgBoxには下記みたいな表記が必要ですよね?
If Me.TextBukkenNumber = "" Then
MsgBox "物件No.が選択されていません。", vbCritical
MsgBox以下にどのように書けばよいでしょうか?
ちなみに黄色くなってるrate = Me.TextKinri.Value / 12 / 100のMe.TextKinri.Value の部分にマウスオーバーすると吹き出しで、Me.TextKinri.Value=""という表示が出て、rate=の部分にはrate=0と出ています。
お手数おかけしますが、よろしくお願いいたします。
こんにちは。
TextKikanは元々数値が入っておらずその都度30とか35を入力します。
なのでnperは360とか420という値になります。
TextKariireもTextKinriも同様に手入力で数値を入力します。
なので冒頭にIf Me.TextKariire.Value = "" Or Me.TextKikan.Value = "" Or Me.TextKinri.Value = "" Then
Me.TextHensaigaku.Value = ""と書いています。
よろしくお願いいたします。