解決済みの質問
数値の比較に関する質問です。VBA
数値の比較に関する質問です。VBA
Private Sub 集計Button_Click()
Dim Dmin As Currency
Dim N As Integer
Dim Flg As Boolean
For N = 1 To 20
With Me.Controls("価格1Text" & N)
If IsNumeric("価格1Text" & N.Value) And Flg = False Then
Dmin = CCur("価格1Text" & N.Value)
Flg = True
ElseIf IsNumeric("価格1Text" & N.Value) And Flg Then
If CCur("価格1Text" & N.Value) < Dmin Then Dmin = CCur("価格1Text" & N.Value)
End If
End With
Next
With Me.Controls("価格1Text0")
If Flg Then
最低価格NK.Value = Dmin
Else
最低価格NK.Value = vbNullString '※ = 0
End If
End With
End Sub
以上のようにUserForm内のテキストボックス1~20にある価格を比較し、最小値を最低価格NK(テキストボックスに)に表示
させたいのですが、うまくいきません。どこが悪いのでしょう。
ちなみに、コンパイルエラーで装飾子が不正となってしまいます。
よろしくお願いします。
-
- 質問日時:
- 2012/2/14 17:22:36
-
- 解決日時:
- 2012/2/29 05:49:30
-
- 回答数:
- 2
-
- お礼:
- 知恵コイン
- 50枚
-
- 閲覧数:
- 62
-
- ソーシャルブックマークへ投稿:
- Yahoo!ブックマークへ投稿
- はてなブックマークへ投稿
- (ソーシャルブックマークとは)
ベストアンサーに選ばれた回答
ja7awuさん
あらまぁ~ 未だ こんな感じなの?
> コンパイルエラーで装飾子が不正となってしまいます。
> For N = 1 To 20
なのに どうして
> If IsNumeric("価格1Text" & N.Value) And Flg = False Then
とか
> Dmin = CCur("価格1Text" & N.Value)
とかに わざわざ直したのでしょうか?
変数Nは数値で1から20までルーブするごとに増えます。
Nは、RangeではありませんのでN.Valueは、有り得ません。
提示されたコードの意味を解析して理解し、コントロール名が実情と合っているかチェックしてみたら如何でしょうか。
- 違反報告
- 編集日時:2012/2/14 21:06:49
- 回答日時:2012/2/14 20:49:30
この質問は投票によってベストアンサーが選ばれました!
- この質問・回答は役に立ちましたか?
- 役に立った!
お役立ち度:
1人が役に立つと評価しています。
ベストアンサー以外の回答
(1件中1〜1件)
とりあえずコードが読み難い
玄人ぶった書き方をしているので他人に読ませるソースではない
色々と省略して書かれているので書いた本人が理解できていないと思います
可能な限り明示することが理解にも繋がります
Dim strAryValue(19) As String '値を格納する配列を宣言
Dim intCnt As Integer 'ループ変数が一文字は間違いを見落としやすい
Dim curDmin As Currency '変数には型が判るように宣言する
Dim blnFlg As Boolean
blnFlg = False
'愚直に値を取得する
strAryValue(0) = Trim(価格1Text1.Text)
strAryValue(1) = Trim(価格1Text2.Text)
中略
strAryValue(18) = Trim(価格1Text19.Text)
strAryValue(19) = Trim(価格1Text20.Text)
curDmin = 999999999'価格の入力テキストボックスに入力できる最大値をセットしておく
For intCnt = LBound(strAryValue) To UBound(strAryValue)
'処理
If Trim(strAryValue(intCnt)) = "" Then
Else
If IsNumeric(strAryValue(intCnt)) = False Then
Else
If curDmin > Ccur(strAryValue(intCnt)) Then
curDmin = CCur
blnFlg = True
Else
EndIf
EndIf
EndIf
Next intCnt 'ループのNextに使用したカウンター変数を書いておくと後々判り易い
If blnFlg = False Then
最低価格NK.Text = ""
Else
最低価格NK.Text = Cstr(curDmin) 'Format(curDmin,"###,###,##0")
EndIf
机上ロジックです
バグだしお願いします
- 違反報告
- 回答日時:2012/2/15 09:01:53

