過去ログ

                                Page      88
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼教えてください!  asapen_kuni 02/9/15(日) 14:43
   ┗Re:教えてください!  Nakamura 02/9/15(日) 20:06
      ┗Re:教えてください!  asapen_kuni 02/9/15(日) 21:00
         ┗Re:教えてください!  Nakamura 02/9/15(日) 22:05
            ┣Re:教えてください!  asapen_kuni 02/9/15(日) 22:45
            ┃  ┗Re:教えてください!  Nakamura 02/9/15(日) 23:17
            ┗Re:教えてください!  asapen_kuni 02/9/16(月) 9:08
               ┗Re:教えてください!  Nakamura 02/9/16(月) 11:02
                  ┗Re:教えてください!  asapen_kuni 02/9/16(月) 11:22
                     ┗再び教えてください!  asapen_kuni 02/9/16(月) 22:42
                        ┗Re:再び教えてください!  Nakamura 02/9/17(火) 1:18
                           ┗Re:再び教えてください!  asapen_kuni 02/9/17(火) 7:19
                              ┗Re:再び教えてください!  Nakamura 02/9/17(火) 8:57
                                 ┗Re:再び教えてください!  asapen_kuni 02/9/17(火) 22:55
                                    ┗Re:再び教えてください!  Nakamura 02/9/18(水) 1:11
                                       ┗Re:再び教えてください!  asapen_kuni 02/9/18(水) 6:33

 ───────────────────────────────────────
 ■題名 : 教えてください!
 ■名前 : asapen_kuni
 ■日付 : 02/9/15(日) 14:43
 -------------------------------------------------------------------------
   はじめまして。最近VBAを使用し始めたものです。
非常に初歩的で申し訳ないのですが、どうしてもわからないことがあります。
セルA1からAN個、x1からXNというデータを入力してそのデータを使って繰り返しの計算を行いたいのですが、変数の宣言を行う場合N個という宣言はどのようにすればいいのでしょうか?また計算によってNという値を計算はじめにMsgboxを用いて指定したいのですが・・・Nの値を指定してその都度きちんとN番目のセルまでのデータを読み込ませて計算させたデータを再度セルB1からBN個までに表示させることはできるのでしょうか?
いろいろと検討してているのですがなにぶん知識がないため応用がきかず困っています。
説明がうまくなく申し訳ないのですが、どなたかアドバイスいただけると幸いです。
どうぞよろしくお願いします。
 ───────────────────────────────────────  ■題名 : Re:教えてください!  ■名前 : Nakamura  ■日付 : 02/9/15(日) 20:06  -------------------------------------------------------------------------
   ▼asapen_kuni さん:
>はじめまして。最近VBAを使用し始めたものです。
>非常に初歩的で申し訳ないのですが、どうしてもわからないことがあります。
>セルA1からAN個、x1からXNというデータを入力してそのデータを使って繰り返しの計算を行いたいのですが、変数の宣言を行う場合N個という宣言はどのようにすればいいのでしょうか?また計算によってNという値を計算はじめにMsgboxを用いて指定したいのですが・・・Nの値を指定してその都度きちんとN番目のセルまでのデータを読み込ませて計算させたデータを再度セルB1からBN個までに表示させることはできるのでしょうか?
>いろいろと検討してているのですがなにぶん知識がないため応用がきかず困っています。
>説明がうまくなく申し訳ないのですが、どなたかアドバイスいただけると幸いです。
>どうぞよろしくお願いします。

こんばんは

回答ではありませんが、繰り返しの計算とは具体的どの様な計算ですか?
要約してもかまいませんが、何処かのセルに値が入った時に、こういう計算をして
このセルに計算結果を入れたいとか、コマンドボタンを押した時に・・など
そこら辺を書かないと、レスを付けようにも付けられませんよ。

それでは
 ───────────────────────────────────────  ■題名 : Re:教えてください!  ■名前 : asapen_kuni  ■日付 : 02/9/15(日) 21:00  -------------------------------------------------------------------------
   ▼Nakamura さん:

こんばんは、VBAにあまり詳しくないので説明が適切でなく申し訳ありません。

>繰り返しの計算とは具体的どの様な計算ですか?

上手く説明できないのですが簡単に・・・
変数a1からaN・b1からbN・X1からXN・Nを宣言する。

次にメッセージボックスを用いて扱う変数の数(?)Nを指定する。
*この指定したNの値でセルのB○・C○の○の値を指定したい。

 a1,a2,a3,a4,a5,a6・・・・aN
という値を指定しSheet1のセルB1から順にB2,B3,B4,B5,B6・・・・BNに書き込む。
 b1,b2,b3,b4,b5,b6・・・・bN
という値を指定しSheet1のセルC1から順にC2,C3,C4,C5,C6・・・・CNに書き込む。
 
 X=a+bという計算をX1、X2、X3、X4、X5、X6・・・・XNまで各セルからaとbの値を読み込んで繰り返し行い、最後にすべてのXの値(X1からXNまで)を足し算し、セルD1に表示させる。

 こんな感じのプログラムを書きたいのですが上手くセルを扱うことができないのと、計算によってNの値が変わるのでどのようにプログラムすればよいかわからず投稿させていただきました。
 ───────────────────────────────────────  ■題名 : Re:教えてください!  ■名前 : Nakamura  ■日付 : 02/9/15(日) 22:05  -------------------------------------------------------------------------
   ▼asapen_kuni さん:
>▼Nakamura さん:
>
>こんばんは、VBAにあまり詳しくないので説明が適切でなく申し訳ありません。
>
>>繰り返しの計算とは具体的どの様な計算ですか?
>
>上手く説明できないのですが簡単に・・・
>変数a1からaN・b1からbN・X1からXN・Nを宣言する。
>
>次にメッセージボックスを用いて扱う変数の数(?)Nを指定する。
>*この指定したNの値でセルのB○・C○の○の値を指定したい。
>
> a1,a2,a3,a4,a5,a6・・・・aN
>という値を指定しSheet1のセルB1から順にB2,B3,B4,B5,B6・・・・BNに書き込む。
> b1,b2,b3,b4,b5,b6・・・・bN
>という値を指定しSheet1のセルC1から順にC2,C3,C4,C5,C6・・・・CNに書き込む。
> 
> X=a+bという計算をX1、X2、X3、X4、X5、X6・・・・XNまで各セルからaとbの値を読み込んで繰り返し行い、最後にすべてのXの値(X1からXNまで)を足し算し、セルD1に表示させる。
>
> こんな感じのプログラムを書きたいのですが上手くセルを扱うことができないのと、計算によってNの値が変わるのでどのようにプログラムすればよいかわからず投稿させていただきました。

こんばんは

こう言う事かな?

Sub test()

  Dim a As Variant
  Dim b As Variant
  Dim i As Integer
  Dim x As Variant
  
  a = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
  b = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
  
st1:

  i = Application.InputBox("計算する数Nを入力して下さい。", Type:=1)
  
  If i = 0 Then Exit Sub
  
  If i > UBound(a) + 1 Then
    
    MsgBox "数値が大きすぎます。最大" & UBound(a) + 1 & "です。"
    GoTo st1
    
  End If
  
  Range("B1").Resize(UBound(a) + 1).ClearContents
  Range("C1").Resize(UBound(b) + 1).ClearContents

  For i = i - 1 To 0 Step -1
    
    Range("B1").Offset(i).Value = a(i)
    Range("C1").Offset(i).Value = b(i)
    x = x + a(i) + b(i)

  Next
  
  Range("D1").Value = x
    
End Sub

Arrayの中身を実際にa1〜aN,b1〜bNを入れて下さい。
セルにデータが入っていない事を前提にコードを書いています。
お試し下さい。
それでは
 ───────────────────────────────────────  ■題名 : Re:教えてください!  ■名前 : asapen_kuni  ■日付 : 02/9/15(日) 22:45  -------------------------------------------------------------------------
   ▼Nakamura さん:>
>
早速の回答ありがとうございます。
一つお聞きしたいのですが
セルに任意の値をいれて計算させるにはどうしたらいいのでしょうか?
 ───────────────────────────────────────  ■題名 : Re:教えてください!  ■名前 : Nakamura  ■日付 : 02/9/15(日) 23:17  -------------------------------------------------------------------------
   こんばんは

具体的にどう言う事でしょうか?
例えばセルA1に1と入れてセルB1にセルA1の値に1足した値を
入れるには、VBAを使うまでもなくセルB1に

”=A1+1”

と記述すれば済む訳です。
>セルに任意の値をいれて計算させるにはどうしたらいいのでしょうか?
と言われましてもアドバイスしようが有りません。
それとも、セルに前々回の
>変数a1からaN・b1からbN・X1からXN・Nを宣言する。
のNの値をセルに入れたらと言う事ですか?
 ───────────────────────────────────────  ■題名 : Re:教えてください!  ■名前 : asapen_kuni  ■日付 : 02/9/16(月) 9:08  -------------------------------------------------------------------------
   >>▼Nakamura さん:
またまた上手く説明できないのですが簡単に・・・
作成していただいたプログラムでは「セルにデータが入っていない事を前提にコードを書いています。」ということで、Arrayの中身に自分の計算させたい数字を入れるみたいなのですが、これをセルにN個の値を入れその入れた値を用いてプログラムを走らせるにはどうしたらいいのでしょうか?また計算によってNは変動するので、
>  i = Application.InputBox("計算する数Nを入力して下さい。", Type:=1)
の入力を用いて使用するセルの範囲も決定したいのですが・・・
そんなことは出きるのでしょうか?
 ───────────────────────────────────────  ■題名 : Re:教えてください!  ■名前 : Nakamura  ■日付 : 02/9/16(月) 11:02  -------------------------------------------------------------------------
   お早うございます。

予めセルB1〜BN、C1〜CNにデータが入っていて、この内B1、C1から
何個のデータを使うかを入力して計算させたいと言う事かな?


Sub test()

  Dim r As Integer
  Dim i As Integer
 
st1:

  i = Application.InputBox("計算する数Nを入力して下さい。", Type:=1)
 
  If i = 0 Then Exit Sub
  
  r = Range("B1").End(xlDown).Row
  
  If i > r Then
  
    MsgBox "数値が大きすぎます。最大" & r & "です。"
    GoTo st1
  
  End If
 
  Cells(1, 4).ClearContents
  
  For i = i To 1 Step -1
  
    Cells(1, 4).Value = Cells(1, 4).Value + Cells(i, 2).Value + Cells(i, 3).Value

  Next
 
End Sub

私の02/9/15(日) 23:17のレスに対するお答えはどうなりましたか?
それでは

 ───────────────────────────────────────  ■題名 : Re:教えてください!  ■名前 : asapen_kuni  ■日付 : 02/9/16(月) 11:22  -------------------------------------------------------------------------
   ▼Nakamura さんへ

おはようございます。
朝早くからすみません・・・
全くの初心者で上手く説明できないにもかかわらず理解していただき感激です。

02/9/15(日) 23:17のレスでいただいたプログラムとあわせて考えてみて、理解が深まりました。
これから自分がやろうとすることに活かしてみたいと思います。

貴重な時間を使ってまでレスいただき本当に感謝しています。
これから自分なりにプログラムを作成してみようと思います。

今後もお世話になることがあると思いますがそのときはまたよろしくお願いいたします。
 ───────────────────────────────────────  ■題名 : 再び教えてください!  ■名前 : asapen_kuni  ■日付 : 02/9/16(月) 22:42  -------------------------------------------------------------------------
   >▼Nakamura さんへ

こんばんわ。
またまた申し訳ないのですがお聞きしたいことがあります。
先日教えていただいたプログラムの一部を使用しているのですが、次の様にループさせると一回で止まってしまします。
5列目と6列目にはデータが6行目まで入っています。
この状態で7列目(G1)と8列目(H1)の1行目に初期値としてデータを入れてNの値を6と指定してループをまわそうとしているのですが一回で止まってしまいます。
条件が悪いのでしょうか?
疑問が湧いたので教えていただければ幸いです。
よろしくお願いいたします。


st1
a = Application.InputBox("最大Nを入力して下さい。", Type:=1)
  If a = 0 Then Exit Sub
  r = Range("E1").End(xlDown).Row
 
  If a > r Then
 
    MsgBox "データがありません。最大" & r & "です。"
    GoTo st1
  End If

  Cells(a, 7).ClearContents
  Cells(a, 8).ClearContents
  Range("G1") = a1
  Range("H1") = h1

For a = a To 1 Step -1

  Cells(a + 1, 7).Value = Cells(a, 7).Value + ((Cells(a, 8).Value) * (Cells(a, 5).Value))
  Cells(a + 1, 8).Value = Cells(a, 8).Value - ((Cells(a + 1, 7).Value) * (Cells(a + 1, 6).Value))
    
Next
 ───────────────────────────────────────  ■題名 : Re:再び教えてください!  ■名前 : Nakamura  ■日付 : 02/9/17(火) 1:18  -------------------------------------------------------------------------
   こんばんは

>Range("G1") = a1
>Range("H1") = h1

これは数値が入った変数を代入してるんですよね?
これを数値に変えてやってみましたが、一回でループが終わる事は有りませんでした。
>For a = a To 1 Step -1
にブレイクポイントを設定して、ステップ動作で確認して見て下さい。
この時、変数aにマウスのカーソルを持っていくと、a=*(*は実際の数値)と表示
されますので、これを見ながら確認して見て下さい。

それでは
 ───────────────────────────────────────  ■題名 : Re:再び教えてください!  ■名前 : asapen_kuni  ■日付 : 02/9/17(火) 7:19  -------------------------------------------------------------------------
   ▼Nakamura さん:
おはようございます。
>
>>Range("G1") = a1
>>Range("H1") = h1
>
>これは数値が入った変数を代入してるんですよね?

この部分ですがa1,h1には初期値として定数0,1が入ります。
これをプログラム先頭の宣言時にConst a1=0 Const h1=1と宣言しています。
確認したのですがやはりおなじでした。定数を用いているのがよくないのでしょうか?
 ───────────────────────────────────────  ■題名 : Re:再び教えてください!  ■名前 : Nakamura  ■日付 : 02/9/17(火) 8:57  -------------------------------------------------------------------------
   お早うございます。

For文に入る前のaの値はどうなっているでしょうか?
 ───────────────────────────────────────  ■題名 : Re:再び教えてください!  ■名前 : asapen_kuni  ■日付 : 02/9/17(火) 22:55  -------------------------------------------------------------------------
   ▼Nakamura さん:
こんばんわ。
何度もすみません・・・

>For文に入る前のaの値はどうなっているでしょうか?

何も入っていません。(入っていないつもりです。)
一回目のループで初めてaに1が入り、計算をするつもりなのですが・・・
 ───────────────────────────────────────  ■題名 : Re:再び教えてください!  ■名前 : Nakamura  ■日付 : 02/9/18(水) 1:11  -------------------------------------------------------------------------
   こんばんは

>この状態で7列目(G1)と8列目(H1)の1行目に初期値としてデータを入れてNの値を6と指定して
と有りますので、

>a = Application.InputBox("最大Nを入力して下さい。", Type:=1)

で”6”を入力するのはずなので、aには”6”が入るはずです。

>For a = a To 1 Step -1

>  Cells(a + 1, 7).Value = Cells(a, 7).Value + ((Cells(a, 8).Value) * (Cells(a, 5).Value))
>  Cells(a + 1, 8).Value = Cells(a, 8).Value - ((Cells(a + 1, 7).Value) * (Cells(a + 1, 6).Value))
    
>Next

ではaを”6”から”1”づつ減算していき"1"になるまで繰り返します。

>何も入っていません。(入っていないつもりです。)
>一回目のループで初めてaに1が入り、計算をするつもりなのですが・・・

と言う事は意図しているコードと違うのでは?
ちょっとコードからどの様な計算がしたいのかよく分からないのですが。
1から6回繰り返すには、
プロシージャの先頭に
Dim i As Integer
と宣言して

For i = 1 To a

  Cells(i + 1, 7).Value = Cells(i, 7).Value + ((Cells(i, 8).Value) * (Cells(i, 5).Value))
  Cells(i + 1, 8).Value = Cells(i, 8).Value - ((Cells(i + 1, 7).Value) * (Cells(i + 1, 6).Value))
    
Next i

としてみて下さい。

それでは
 ───────────────────────────────────────  ■題名 : Re:再び教えてください!  ■名前 : asapen_kuni  ■日付 : 02/9/18(水) 6:33  -------------------------------------------------------------------------
   ▼Nakamura さん:
おはようございます。
凄い勘違いをしていたみたいです。
おっしゃるとおりでした!!
自分のプログラムの中に入れてみましたがようやく他の計算とともに動きました。
Nakamuraさんには本当に感謝しています。
つまらない質問に最後まで付き合っていただきまして本当にありがとうございました。

また、機会があったら教えてください。
(自分だけではどこがいけないのかはっきりできない状態なので・・・・)
本当にありがとうございました。
VBA楽しくなってきました。

>Dim i As Integer
>と宣言して
>
>For i = 1 To a
>
>  Cells(i + 1, 7).Value = Cells(i, 7).Value + ((Cells(i, 8).Value) * (Cells(i, 5).Value))
>  Cells(i + 1, 8).Value = Cells(i, 8).Value - ((Cells(i + 1, 7).Value) * (Cells(i + 1, 6).Value))
>    
>Next i
>
>としてみて下さい。
>
>それでは
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 88