『3つの整数aとb,cを各々Inputboxで入力し、その合計と平均を表示する。
実行例:aが14、bが36、cが3であれば 合計は17.6666666666667です。』

って、いう課題が大学で出てるんですけど、意味がわかりません。
もし、意味がわかったなら教えてください。
よろしくお願いします。

A 回答 (3件)

Sub Main()


 Dim lLoop As Long
 Dim sMsg As String
 Dim sBuf As String
 Dim dData(2) As Double
 Dim dSum As Double

 sMsg = "Input "
 Do
  For lLoop = 0 To 2
   sBuf = InputBox(sMsg & Chr(Asc("A") + lLoop))
   If sBuf = "" Then Exit Do
   dData(lLoop) = Val(sBuf)
  Next lLoop
  dSum = dData(0) + dData(1) + dData(2)
  MsgBox Str(dData(0)) & " + " & Str(dData(1)) & " + " & Str(dData(2)) & " = " & _
  vbCrLf & "合計 " & dSum & " 平均 " & dSum / 3
 Loop
End Sub
    • good
    • 0

まず、これは、問題がおかしいです。

正しくは、

『3つの整数aとb,cを各々Inputboxで入力し、その合計と平均を表示する。
実行例:aが14、bが36、cが3であれば 合計は53、平均は17.6666666666667です。』

だと思います。

InputBoxというのは、画面に入力を促すダイアログボックスを表示して、入力する関数です。

a=InputBox("数字を入力してください")

こんな感じで使います。詳しい使用法は、Visual Basicのヘルプを見てください。
    • good
    • 0
この回答へのお礼

RIOさんのいう通り、問題写すの間違ってました・・・。すみません!
『実行例:aが14、bが36、cが3であれば 
合計は53、平均は17.6666666666667です。』
どうも、お騒がせしました!(笑

お礼日時:2001/10/04 14:21

>合計は17.6666666666667


 平均の誤植だと思います
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QブックAシートAにブックBシートBをコピーしたい

VB.net VB.2008 にてプログラムしています。

ブックAのシートAにブックBのシートBをコピーするには、
どうしたら良いでしょうか?

ブックAシートAには他のシートへの参照が入っています。
ブックBシートBの数値を入れたら、ブックA内の他シートに参照された数値が行き渡るように
したいのですが、行き詰ってます。


 Worksheet.Copy()


だと、Before,Afterの設定になり、そのページズバリにコピーができません。

お知恵をお貸しください。
お願いします。

Aベストアンサー

実際に処理を実行するのは Excel なんだから、Excel VBA の
Copy メソッドのヘルプで確認すればいいじゃない???
Worksheet.Range.Copy(Destination) だよね。Cells で
シートの全セルを対象とした Range を取得するか、使用範囲
のみにするか、そのあたりはお好きなようにどうぞ。

QVB.NET(ASP.NET)でページAからページBに新しいWindowで飛んだ後ページBにページAのDataGrid情報をもっていく方法

VB.NET(ASP.NET)のWebアプリケーションを
VB.NET2003で開発しているのですが
ページAに表示しているDataGridを新しいWindowで表示したページBのDataGridに表示させたいんです。
Session情報に入れようと思いましたが入らない・・
どうしたらよいでしょうか?

Aベストアンサー

お世話になります。

各画面で全く同じものを表示するのなら、
ユーザコントロールか、Web カスタムコントロールにしてしまうのが効率がよいと思います。
それで、その上で DataSource に使っている
DataSet やら DataTable やらを Session で渡すとか。

> Session情報に入れようと思いましたが入らない・・
これは具体的にどうして入らないのでしょうか。

Qエクセル A1の値と同じ値の入ったB列のC列の計

A1=10 D1=37
B C
10 15
11 10
10 12
12 1
10 10
A1と同じ値をB列から探し其の行のC列の値の合計をD1に表示したいのです
ご教授ください

Aベストアンサー

数式でやったほうが簡単ですが ・・・
=SUMIF(B1:B5,A1,C1:C5)
または
=SUMPRODUCT((B1:B5=A1)*1,C1:C5)

どうしてもVBAでというなら
標準モジュールに
Function mySum(rCnd as range, vSelect as variant, rSum as Range) as variant
  dim nCount as Long
  nCount = rCnd.rows.Count
  if nCount <> rSum.rows.Count then
    mySum = "---"
  else
    dim vC, vS
    dim n as Integer, value
    vC = rCnd.value
    vS = rSum.Value
    for n = 1 to nCount
      if vC(n,1) = vSelect then
        value = value + vS(n,1)
      end if
    next
    mySum = value
  end if
end Function
D1セルに =mySum(B1:B5, A1, C1:C5) といった数式を記述
といった具合です … 簡易なエラーチェックしかしていません

数式でやったほうが簡単ですが ・・・
=SUMIF(B1:B5,A1,C1:C5)
または
=SUMPRODUCT((B1:B5=A1)*1,C1:C5)

どうしてもVBAでというなら
標準モジュールに
Function mySum(rCnd as range, vSelect as variant, rSum as Range) as variant
  dim nCount as Long
  nCount = rCnd.rows.Count
  if nCount <> rSum.rows.Count then
    mySum = "---"
  else
    dim vC, vS
    dim n as Integer, value
    vC = rCnd.value
    vS = rSum.Value
    for n = 1 to n...続きを読む

Q4桁の数字を A*1000+B*100+C*10+D 以外で表現したい。

A=1
B=2
C=3
D=4

のとき 
1234をA*1000+B*100+C*10+D以外で表現したいのですが
何かいい方法がないでしょうか?
4桁ならいいんですが
15、6桁を10行ぐらいコーディングしないといけないのでなえてます↓助けてください。

Aベストアンサー

No.4です。

VB2005でも問題なくできますよ。実際に確認済みです。

Dim A As Integer = 1
Dim B As Integer = 2
Dim C As Integer = 3
Dim D As Integer = 4
Dim E As integer

E = (A & B & C & D) * 1
MsgBox(E)

これで試してください。

QExcel VBAでグラフ作成。A,C列をx値, B,D列をy値にした複数プロット

ExcelのVBAでグラフをChartType = xlXYScatterLinesでグラフを作っています。仮に各列10行でAからF列までデータがあるとします。
Set chartObj = ActiveSheet.ChartObjects.Add(170, 170, 280, 170)
With chartObj.Chart
.ChartType = xlXYScatterLines
.SetSourceData Worksheets(1).Range("A1:F10"), _
PlotBy:=xlColumns
.HasLegend = False
End With

上記のようにしてしまうと、x値がA1:A10で、y値がB1:B10,C1:C10・・・・のプロットが5本作成されてしまいます。

以下のようにするにはどうすればよろしいでしょうか。
第一のプロットはx値をA1:A10, y値をB1:B10としてグラフを作成します。次にこのグラフにx値をC1:C10, y値をD1:D10とした第二のプロットを追加、同様に第三はx値をE1:E10, y値をF1:F10としてプロットを追加したグラフを作成したいのですが、このようなグラフはVBAで作成可能でしょうか。

本番のグラフは行数と列数はいろいろな場合があるので、行数と列数のパラメータに任意の値を代入し、Forループで様々な形態に対応できるものを作りたいと考えています。

ExcelのVBAでグラフをChartType = xlXYScatterLinesでグラフを作っています。仮に各列10行でAからF列までデータがあるとします。
Set chartObj = ActiveSheet.ChartObjects.Add(170, 170, 280, 170)
With chartObj.Chart
.ChartType = xlXYScatterLines
.SetSourceData Worksheets(1).Range("A1:F10"), _
PlotBy:=xlColumns
.HasLegend = False
End With

上記のようにしてしまうと、x値がA1:A10で、y値がB1:B10,C1:C10・・・・のプロットが5本作成されてしまいます。

以下のようにするにはどうすれ...続きを読む

Aベストアンサー

Dim chartObj As ChartObject
Dim r As Range
Dim i As Long

Set chartObj = ActiveSheet.ChartObjects.Add(170, 170, 280, 170)
Set r = Worksheets(1).Range("A1:F10")
With chartObj.Chart
  .ChartType = xlXYScatterLines
  .HasLegend = False
  For i = 1 To 5 Step 2
    With .SeriesCollection.NewSeries
      .XValues = r.Columns(i)
      .Values = r.Columns(i + 1)
    End With
  Next
End With

Set r = Nothing
Set chartObj = Nothing

...こんな感じ。
普通に手作業で作成するものをマクロ記録すればヒントになるでしょう。
後から系列を追加すればいいわけです。

>本番のグラフは行数と列数はいろいろな場合があるので...
...に対応させる一例としては以下。

Const MN = 1 'データ開始行
Const MX = 10 'データ個数
Dim chartObj As ChartObject
Dim x, y
Dim z As Long
Dim i As Long

x = VBA.Array(1, 3, 5) 'x値の列
y = VBA.Array(2, 4, 6) 'y値の列
Set chartObj = ActiveSheet.ChartObjects.Add(170, 170, 280, 170)
With chartObj.Chart
  .ChartType = xlXYScatterLines
  .HasLegend = False
  For i = 0 To UBound(x)
    With .SeriesCollection.NewSeries
      .XValues = Cells(MN, x(i)).Resize(MX)
      .Values = Cells(MN, y(i)).Resize(MX)
    End With
  Next
End With

Set chartObj = Nothing

Dim chartObj As ChartObject
Dim r As Range
Dim i As Long

Set chartObj = ActiveSheet.ChartObjects.Add(170, 170, 280, 170)
Set r = Worksheets(1).Range("A1:F10")
With chartObj.Chart
  .ChartType = xlXYScatterLines
  .HasLegend = False
  For i = 1 To 5 Step 2
    With .SeriesCollection.NewSeries
      .XValues = r.Columns(i)
      .Values = r.Columns(i + 1)
    End With
  Next
End With

Set r = Nothing
Set chartObj = Nothing

.....続きを読む


人気Q&Aランキング

おすすめ情報