Excel VBA質問箱 IV

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

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


7281 / 13644 ツリー ←次へ | 前へ→

【40062】textboxのカウントについて てつじ 06/7/6(木) 14:33 質問[未読]
【40063】Re:textboxのカウントについて Statis 06/7/6(木) 14:39 回答[未読]
【40064】Re:textboxのカウントについて てつじ 06/7/6(木) 15:07 質問[未読]
【40066】Re:textboxのカウントについて Statis 06/7/6(木) 15:37 回答[未読]
【40067】Re:textboxのカウントについて てつじ 06/7/6(木) 15:42 質問[未読]
【40068】Re:textboxのカウントについて ちょっと 06/7/6(木) 15:46 質問[未読]
【40071】コードをまとめることについて わさび 06/7/6(木) 16:42 発言[未読]
【40070】Re:textboxのカウントについて Statis 06/7/6(木) 16:40 発言[未読]
【40073】Re:textboxのカウントについて てつじ 06/7/6(木) 17:12 お礼[未読]
【40076】Re:textboxのカウントについて Statis 06/7/6(木) 17:18 回答[未読]
【40075】Re:textboxのカウントについて Kein 06/7/6(木) 17:18 回答[未読]
【40115】Re:textboxのカウントについて てつじ 06/7/7(金) 8:51 お礼[未読]

【40062】textboxのカウントについて
質問  てつじ  - 06/7/6(木) 14:33 -

引用なし
パスワード
   こんにちは、textbox5〜45の中でbox内に数字が入力されているboxを1と考え、何個入力されているか計算し、tetbox46に表示させたいのですが・・・。
どういうコードになりますでしょうか?

【40063】Re:textboxのカウントについて
回答  Statis  - 06/7/6(木) 14:39 -

引用なし
パスワード
   こんにちは

こんな感じです

Dim i As Long, Co As Long
Co = 0
For i = 5 To 45
  If IsNumeric(Me.Controls("TextBox" & i).Value) Then
    Co = Co + 1
  End If
Next i
Me.TextBox46.Value = Co

【40064】Re:textboxのカウントについて
質問  てつじ  - 06/7/6(木) 15:07 -

引用なし
パスワード
   ▼Statis さん:
>こんにちは
>
>こんな感じです
>
>Dim i As Long, Co As Long
>Co = 0
>For i = 5 To 45
>  If IsNumeric(Me.Controls("TextBox" & i).Value) Then
>    Co = Co + 1
>  End If
>Next i
>Me.TextBox46.Value = Co

早々の回答ありがとうございます。
コードを見て勉強してみました。おおよその理解はできました。
IsNumericの意味としては、box内に文字?数字?が入っていればということですか?

【40066】Re:textboxのカウントについて
回答  Statis  - 06/7/6(木) 15:37 -

引用なし
パスワード
   ▼てつじ さん:
こんにちは

>コードを見て勉強してみました。おおよその理解はできました。
>IsNumericの意味としては、box内に文字?数字?が入っていればということですか?

TextBoxの値が数値として評価できるかどうかを調べています。

【40067】Re:textboxのカウントについて
質問  てつじ  - 06/7/6(木) 15:42 -

引用なし
パスワード
   ▼Statis さん:
>▼てつじ さん:
>こんにちは
>
>>コードを見て勉強してみました。おおよその理解はできました。
>>IsNumericの意味としては、box内に文字?数字?が入っていればということですか?
>
>TextBoxの値が数値として評価できるかどうかを調べています。

ありがとうございました。また一つ勉強になりました。
下記のコードを作成したのですが、まだ省略できる様な気がするのですが・・・。
できますでしょうか?

Co = 0
For i = 5 To 46
  If IsNumeric(Me.Controls("TextBox" & i).Value) Then
    Co = Co + 1
  End If
Next i
Me.TextBox179.Value = Co


Co = 0
For i = 48 To 89
  If IsNumeric(Me.Controls("TextBox" & i).Value) Then
    Co = Co + 1
  End If
Next i
Me.TextBox184.Value = Co


Co = 0
For i = 91 To 132
  If IsNumeric(Me.Controls("TextBox" & i).Value) Then
    Co = Co + 1
  End If
Next i
Me.TextBox189.Value = Co

Co = 0
For i = 134 To 175
If IsNumeric(Me.Controls("TextBox" & i).Value) Then
    Co = Co + 1
  End If
Next i
Me.TextBox193.Value = Co

TextBox178 = TextBox47 * 50
TextBox183 = TextBox90 * 50
TextBox188 = TextBox133 * 50
TextBox192 = TextBox176 * 50

TextBox180 = TextBox179 * 2000
TextBox185 = TextBox184 * 2000
TextBox189 = TextBox190 * 2000
TextBox193 = TextBox194 * 2000

【40068】Re:textboxのカウントについて
質問  ちょっと  - 06/7/6(木) 15:46 -

引用なし
パスワード
   >できますでしょうか?
すこしは考えるということはしないのか?
まちがってもいいから、コードを書いてみて、動かなかったとき
何がまずいかを質問するようにすべきでは?

【40070】Re:textboxのカウントについて
発言  Statis  - 06/7/6(木) 16:40 -

引用なし
パスワード
   こんにちは

>>Me.TextBox189.Value = Co

>Co = 0
>For i = 134 To 175
>If IsNumeric(Me.Controls("TextBox" & i).Value) Then
>    Co = Co + 1
>  End If
>Next i
>>Me.TextBox193.Value = Co

>TextBox180 = TextBox179 * 2000
>TextBox185 = TextBox184 * 2000
>>TextBox189 = TextBox190 * 2000
>>TextBox193 = TextBox194 * 2000

上記で
TextBox の「189」と「193」は記載通りで良いのですか?
カウントを入力して意味がないのでは?

【40071】コードをまとめることについて
発言  わさび  - 06/7/6(木) 16:42 -

引用なし
パスワード
   ▼ちょっと さん:
>>できますでしょうか?
>すこしは考えるということはしないのか?
>まちがってもいいから、コードを書いてみて、動かなかったとき
>何がまずいかを質問するようにすべきでは?

今回のてつじさんの場合、
ご自身のできるところまでコードを省略された上で、
まだ省略できるところがあれば教えてほしいという投稿だと思われますが…

私のような初心者にしてみれば、
コードをまとめるということは、かなりのスキルを必要とすることなんです。
「技」を知らなければコードの省略ってなかなかできないことなんですが、
「コードをまとめる技」として紹介されている本やサイトは
あまりないんじゃないんでしょうか。
(あればぜひ教えてください!)

もちろん他の方の投稿を見てまとめる技を学ぶことも必要ですが、
自分が現在作成しているコードがさらにまとめられることがわかれば、
それが何よりも勉強になります。

この投稿はあくまでも私が感じていることであり、
てつじさんがどう思われるかはわかりません。
(不快な思いをさせてしまったら、申し訳ございません。)

また、何度も同じようなことを質問されている方をみると、
「前にあった回答の応用で出来るのに…」と気になることも正直あります。

ただ、コードをまとめるということは初心者にとってレベルが高いことであり、
なおかつ、スキルアップに大きくつながるという意見もあるということを、
ぜひ汲み取っていただければ幸いです。

【40073】Re:textboxのカウントについて
お礼  てつじ  - 06/7/6(木) 17:12 -

引用なし
パスワード
   ▼Statis さん:
>こんにちは
>
>>>Me.TextBox189.Value = Co
>
>>Co = 0
>>For i = 134 To 175
>>If IsNumeric(Me.Controls("TextBox" & i).Value) Then
>>    Co = Co + 1
>>  End If
>>Next i
>>>Me.TextBox193.Value = Co
>
>>TextBox180 = TextBox179 * 2000
>>TextBox185 = TextBox184 * 2000
>>>TextBox189 = TextBox190 * 2000
>>>TextBox193 = TextBox194 * 2000
>
>上記で
>TextBox の「189」と「193」は記載通りで良いのですか?
>カウントを入力して意味がないのでは?

色々なご意見等ありがとうございます189と193は逆だったことに気づきました。
色々自分なりにいじってみては勉強はしているつもりですが・・・
又、ここで回答いただいた物は他に応用してがんばっています。
また色々と質問する事はあると思いますが、よろしくお願いいたします。

【40075】Re:textboxのカウントについて
回答  Kein  - 06/7/6(木) 17:18 -

引用なし
パスワード
   Co = 0
For i = 5 To 175
  Select Case i
   Case 47
     Me.Controls("TextBox179").Value = Co: Co = 0
   Case 90
     Me.Controls("TextBox184").Value = Co: Co = 0
   Case 133
     Me.Controls("TextBox189").Value = Co: Co = 0
   Case Else
     If IsNumeric(Me.Controls("TextBox" & i).Value) Then
      Co = Co + 1
     End If
  End Select
Next i
Me.TextBox193.Value = Co

>TextBox178 = TextBox47 * 50
以下については、意味不明(無駄または無効な処理と思われ)なので回答不可。

【40076】Re:textboxのカウントについて
回答  Statis  - 06/7/6(木) 17:18 -

引用なし
パスワード
   こんにちは

こんな感じですよ。

Dim i As Long, Co As Long, Co1 As Long, Co2 As Long, Co3 As Long

Co = 0: Co1 = 0: Co2 = 0: Co3 = 0
With Me
   For i = 5 To 175
     If IsNumeric(.Controls("TextBox" & i).Value) Then
      Select Case i
          Case 5 To 46
            Co = Co + 1
          Case 48 To 89
            Co1 = Co1 + 1
          Case 91 To 132
            Co2 = Co2 + 1
          Case 134 To 175
            Co3 = Co3 + 1
      End Select
     End If
   Next i
   .TextBox179.Value = Co
   .TextBox184.Value = Co1
   .TextBox189.Value = Co2
   .TextBox193.Value = Co3
   .TextBox178.Value = Val(.TextBox47.Value) * 50
   .TextBox183.Value = Val(.TextBox90.Value) * 50
   .TextBox188.Value = Val(.TextBox133.Value) * 50
   .TextBox192.Value = Val(.TextBox176.Value) * 50
   .TextBox180.Value = Co * 2000
   .TextBox185.Value = Co1 * 2000
   .TextBox190.Value = Co2 * 2000
   .TextBox194.Value = Co3 * 2000
End With

【40115】Re:textboxのカウントについて
お礼  てつじ  - 06/7/7(金) 8:51 -

引用なし
パスワード
   おはようございます。
昨日色々自分でも考えSelect Caseを使って行うところまでは分かってきたのですが、その先が上手くいきませんでした。
回答ありがとうございました。

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