Excel VBA質問箱 IV

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

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


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

【40117】「,」を付けるには てつじ 06/7/7(金) 9:09 質問[未読]
【40119】Re:「,」を付けるには Blue 06/7/7(金) 9:17 回答[未読]
【40125】Re:「,」を付けるには てつじ 06/7/7(金) 11:04 質問[未読]
【40126】Re:「,」を付けるには Jaka 06/7/7(金) 11:17 回答[未読]
【40127】Re:「,」を付けるには Blue 06/7/7(金) 11:19 回答[未読]
【40128】Re:「,」を付けるには てつじ 06/7/7(金) 11:23 お礼[未読]
【40237】Re:「,」を付けるには てつじ 06/7/10(月) 9:48 質問[未読]
【40239】Re:「,」を付けるには Blue 06/7/10(月) 9:58 発言[未読]
【40244】Re:「,」を付けるには Blue 06/7/10(月) 10:06 発言[未読]
【40240】Re:「,」を付けるには かみちゃん 06/7/10(月) 10:00 発言[未読]
【40246】Re:「,」を付けるには てつじ 06/7/10(月) 10:16 質問[未読]
【40247】Re:「,」を付けるには てつじ 06/7/10(月) 10:18 質問[未読]
【40248】Re:「,」を付けるには Blue 06/7/10(月) 10:26 発言[未読]
【40251】Re:「,」を付けるには てつじ 06/7/10(月) 10:43 お礼[未読]
【40249】Re:「,」を付けるには かみちゃん 06/7/10(月) 10:26 発言[未読]
【40252】Re:「,」を付けるには てつじ 06/7/10(月) 10:44 お礼[未読]

【40117】「,」を付けるには
質問  てつじ  - 06/7/7(金) 9:09 -

引用なし
パスワード
   おはようございます。
昨日は大変ありがとうございました。

例えば、50+2000の計算をsheetから読み取り、formのtextbox上で計算させてみたのですが、はじめは、=502000になっていましたが、自分なりに調べ、Valを使い何とか下記のコードを作ってみました。
=2050にはなるのですが、2050を2,050にしたいのですが、どうしても分かりません・・・。
是非お力をお貸し下さい。

TextBox181.Value = Val(TextBox178.Value) + (TextBox180.Value)

【40119】Re:「,」を付けるには
回答  Blue  - 06/7/7(金) 9:17 -

引用なし
パスワード
   Formatという便利な関数があります。

MsgBox Format(Val("2000") + Val("50"), "#,###")

参考)数値表示書式指定文字 (Format 関数)
http://www.microsoft.com/japan/developer/library/vbenlr98/vafmtuserdefinednumericformats.htm

【40125】Re:「,」を付けるには
質問  てつじ  - 06/7/7(金) 11:04 -

引用なし
パスワード
   ▼Blue さん:
>Formatという便利な関数があります。
>
>MsgBox Format(Val("2000") + Val("50"), "#,###")
>
>参考)数値表示書式指定文字 (Format 関数)
>http://www.microsoft.com/japan/developer/library/vbenlr98/vafmtuserdefinednumericformats.htm


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

For i = 5 To 191
  Select Case i
   Case 47, 90, 133, 176
      Me.Controls("TextBox" & i).Value = Co
      Co = 0
   Case Else
      Co = Co + Val(Me.Controls("TextBox" & i).Value)
  End Select
Next i


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 = Format(Val(.TextBox47.Value) * Val("50"), "##,###")
   TextBox183.Value = Format(Val(.TextBox90.Value) * Val("50"), "##,###")
   TextBox188.Value = Format(Val(.TextBox133.Value) * Val("50"), "##,###")
   TextBox192.Value = Format(Val(.TextBox176.Value) * Val("50"), "##,###")
  
   TextBox180.Value = Format(Val(Co) * Val("2000"), "##,###")
   TextBox185.Value = Format(Val(Co1) * Val("2000"), "##,###")
   TextBox190.Value = Format(Val(Co2) * Val("2000"), "##,###")
   TextBox194.Value = Format(Val(Co3) * Val("2000"), "##,###")


   TextBox181.Value = Format(Val(TextBox178.Value) + Val(TextBox180.Value), "###,###")
   TextBox186.Value = Format(Val(TextBox183.Value) + Val(TextBox185.Value), "###,###")
   TextBox195.Value = Format(Val(TextBox188.Value) + Val(TextBox190.Value), "###,###")
   TextBox196.Value = Format(Val(TextBox192.Value) + Val(TextBox194.Value), "###,###")


End With


ありがとうございます。
なんとか自分なりにいじくってみましたが、最後のtextbox181・186・195・196に入るあたいが1ケタで出てしまいます・・・。何がいけないのでしょうか?

【40126】Re:「,」を付けるには
回答  Jaka  - 06/7/7(金) 11:17 -

引用なし
パスワード
   Val関数の特徴をあまりよく知らないで使っていませんか?

Dim st As String
st = "1,000"
MsgBox Val(st)

数値に変換した方がいいと思いますけど、
全角の場合も数値にしてくれるし....。
CLng(TextBox1.Value)

場合によってはこんなでもいいと思うし
MsgBox Application.Sum(TextBox1.Value, TextBox2.Value)

【40127】Re:「,」を付けるには
回答  Blue  - 06/7/7(金) 11:19 -

引用なし
パスワード
   TextBox178.Valueとかの値が、数字の中に , を含んでいるのでまずいです。

MsgBox Val("10,000") ' 結果は 10(,以前までを数値にする)

ですので、Val関数にかます前に、","を除去する作業をしてください。

MsgBox Val(Replace("10,000", ",", "")) ' 結果は 10000

【40128】Re:「,」を付けるには
お礼  てつじ  - 06/7/7(金) 11:23 -

引用なし
パスワード
   ▼Blue さん:
>TextBox178.Valueとかの値が、数字の中に , を含んでいるのでまずいです。
>
>MsgBox Val("10,000") ' 結果は 10(,以前までを数値にする)
>
>ですので、Val関数にかます前に、","を除去する作業をしてください。
>
>MsgBox Val(Replace("10,000", ",", "")) ' 結果は 10000


ありがとうございました。
確かにまだまだ理解しきれてませんでした・・・。

【40237】Re:「,」を付けるには
質問  てつじ  - 06/7/10(月) 9:48 -

引用なし
パスワード
   おはようございます。
先週、皆さんにアドバイス頂き、本日まで色々と試してはみたのですが
上手くいきません・・・。なにが悪いのかも、はっきりわかりません。
理解できてない事は充分に分かってはいるのですがどうかお力を・・・。
 
TextBox178.Value = Format(Val(.TextBox47.Value) * Val("50"), "##,###")
TextBox180.Value = Format(Val(Co) * Val("2000"), "##,###")

上記のように答えに「,」を入れる所は納得いったのですが、次にtextbox178と180の合計を求めたいのですが、皆さんのアドバイスでは、box内に「,」が含まれているので、一旦「,」をなくす事をするようにと言われましたが、どうも上手くいきません。

【40239】Re:「,」を付けるには
発言  Blue  - 06/7/10(月) 9:58 -

引用なし
パスワード
   すこし整理してみましょう。

> .TextBox47.Value
の値はどうなっていますか?(文字列として)

> Co
の値はどうなっていますか?(文字列として)

"," があればReplaceで消してからVal関数を使わなければなりません。
ただし、ValでなくJakaさんのアドバイスどおり CLng 関数を使えば気にせずにできます。

TextBox178.Value = Format(CLng(.TextBox47.Value) * 50, "##,###")
TextBox180.Value = Format(CLng(Co) * 2000, "##,###")
※Val("50")ならいちいち文字列にしてVal関数を使わずとも、直接 50 と指定すればよいです。

【40240】Re:「,」を付けるには
発言  かみちゃん  - 06/7/10(月) 10:00 -

引用なし
パスワード
   こんにちは。かみちゃん です。

横から失礼します。

>TextBox178.Value = Format(Val(.TextBox47.Value) * Val("50"), "##,###")
>TextBox180.Value = Format(Val(Co) * Val("2000"), "##,###")
>
>上記のように答えに「,」を入れる所は納得いったのですが、次にtextbox178と180の合計を求めたい

普通にTextBoxの値から「,」を除いた数字を足し算するには、
MsgBox Val(Replace(TextBox178.Value, ",", "")) + Val(Replace(TextBox180.Value, ",", ""))
でできるのですが、
MsgBox Val(.TextBox47.Value) * 50 + Val(Co) * 2000
ではいけないのでしょうか?

もちろん、この結果も「,」付き表示にしたいならば、
Format(〜, "#,##0")
とすればいいです。

【40244】Re:「,」を付けるには
発言  Blue  - 06/7/10(月) 10:06 -

引用なし
パスワード
   > textbox178と180の合計を求めたいのですが
が本題でしたね。
前回の回答は勘違いしていました。無視というか参考程度にしてください。

【40246】Re:「,」を付けるには
質問  てつじ  - 06/7/10(月) 10:16 -

引用なし
パスワード
   ありがとうございました。
下記の様にして、納得いくものが出来たのですが、

  TextBox181.Value = Format(Val(Replace(TextBox178.Value, ",", "")) + Val(Replace(TextBox180.Value, ",", "")), "#,##0")

replaceについては納得いきましたが、valとformatの意味がいまいちわかりません・・・。
初心者でも分かるような簡単な説明があれば、是非ともお願い致します。

【40247】Re:「,」を付けるには
質問  てつじ  - 06/7/10(月) 10:18 -

引用なし
パスワード
   すみません、さっきの質問なんですが
valとformatではなくvalとClngでした・・・。

【40248】Re:「,」を付けるには
発言  Blue  - 06/7/10(月) 10:26 -

引用なし
パスワード
   http://www5b.biglobe.ne.jp/~yone-ken/VB/stdfunc.html
のQ5を参考にしてみてください。

【40249】Re:「,」を付けるには
発言  かみちゃん  - 06/7/10(月) 10:26 -

引用なし
パスワード
   こんにちは。かみちゃん です。

> ValとCLngの意味がいまいちわかりません

まずは、以下を試してみて、ヘルプを参照してみていただき、それでもわからなければ
聞いてください。
Sub Sample()
 MsgBox Val("1,000")
 MsgBox CInt("1,000")
 MsgBox CLng("1,000")
End Sub

【40251】Re:「,」を付けるには
お礼  てつじ  - 06/7/10(月) 10:43 -

引用なし
パスワード
   分かりました!!ばっちりです!たぶん・・・
valとclngの違いについておおまかには理解しました。
本当にありがとうございました。

【40252】Re:「,」を付けるには
お礼  てつじ  - 06/7/10(月) 10:44 -

引用なし
パスワード
   ありがとうございました。
一応納得がいくことができました。
本当にありがとうございました。

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