過去ログ

                                Page     455
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼RefEditで取得した値を配列(変数)に格納したい  やま 02/12/14(土) 19:01
   ┗Re:RefEditで取得した値を配列(変数)に格...  つん 02/12/14(土) 22:24
      ┗Re:RefEditで取得した値を配列(変数)に格...  やま 02/12/14(土) 23:14
         ┗Re:RefEditで取得した値を配列(変数)に格...  つん 02/12/15(日) 11:28
            ┗Re:RefEditで取得した値を配列(変数)に格...  やま 02/12/15(日) 18:08

 ───────────────────────────────────────
 ■題名 : RefEditで取得した値を配列(変数)に格納したい
 ■名前 : やま
 ■日付 : 02/12/14(土) 19:01
 -------------------------------------------------------------------------
   みなさん、はじめまして
このサイトにはよくお世話になっております。

質問内容はタイトルのとおりです。
例えば、A1からA8までのセルにそれぞれ1〜8のデータが入っていたとします。
A1からA8までの範囲をRefEdit(ボタン?)で取得し、
配列box(0)〜box(7)【Redim box(0 To 10) As Variant】にそれぞれ
格納することは可能なのでしょうか? 

よろしくお願い致します。
 ───────────────────────────────────────  ■題名 : Re:RefEditで取得した値を配列(変数)に格...  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/12/14(土) 22:24  -------------------------------------------------------------------------
   やま さん、こんばんは

>例えば、A1からA8までのセルにそれぞれ1〜8のデータが入っていたとします。
>A1からA8までの範囲をRefEdit(ボタン?)で取得し、
>配列box(0)〜box(7)【Redim box(0 To 10) As Variant】にそれぞれ
>格納することは可能なのでしょうか? 

ちょっと、【Redim box(0 To 10) As Variant】これの意味がよくわからないのですが、それはとりあえずおいておいて、こんな感じでやってみました。
フォームに、RedEditとコマンドボタンを一つずつ配置して・・・

Private Sub CommandButton1_Click()

  Dim strAddress As String
  Dim Rng As Range
  Dim box(0 To 7) As Variant
  Dim i As Long
  
  strAddress = RefEdit1.Value
  
  Set Rng = Range(strAddress)
  
  If Rng.Cells.Count <> 8 Then
    MsgBox "セルは8個ぶん指定して"
    Exit Sub
    Set Rng = Nothing
  Else
    For i = 0 To 7
      box(i) = Rng(i + 1).Value
    Next i
  End If
  
  For i = 0 To 7
    Debug.Print box(i)
  Next i
  
  Set Rng = Nothing
    
End Sub

これで一応RedEditで範囲指定したセルの値が配列に代入されているようです。
お試しくださいまし。
 ───────────────────────────────────────  ■題名 : Re:RefEditで取得した値を配列(変数)に格...  ■名前 : やま  ■日付 : 02/12/14(土) 23:14  -------------------------------------------------------------------------
   >'1 : Private Sub CommandButton1_Click()
>'2 :
>'3 :  Dim strAddress As String
>'4 :  Dim Rng As Range
>'5 :  Dim box(0 To 7) As Variant
>'6 :  Dim i As Long
>'7 :  
>'8 :  strAddress = RefEdit1.Value
>'9 :  
>'10:  Set Rng = Range(strAddress)
>'11:  
>'12:  If Rng.Cells.Count <> 8 Then
>'13:    MsgBox "セルは8個ぶん指定して"
>'14:    Exit Sub
>'15:    Set Rng = Nothing
>'16:  Else
>'17:    For i = 0 To 7
>'18:      box(i) = Rng(i + 1).Value
>'19:    Next i
>'20:  End If
>'21:  
>'22:  For i = 0 To 7
>'23:    Debug.Print box(i)
>'24:  Next i
>'25:  
>'26:  Set Rng = Nothing
>'27:    
>'28:End Sub

つんさま 素早いお返事に感謝致します。
なるほど、取得値をいったんString型変数に入れてから
Range型、Range関数(配列?)にて使用するのですね。

>ちょっと、【Redim box(0 To 10) As Variant】これの意味がよくわからないのです
これは要素数11個のVariant型配列boxについての宣言です。
入力値より多い要素数だから? ^^;

あと、正しい結果がうまく表示されませんでしたので'23行目を
Cells(i + 1, 2) = box(i) 'B1からB8に表示
とさせていただきました。
 ───────────────────────────────────────  ■題名 : Re:RefEditで取得した値を配列(変数)に格...  ■名前 : つん <honey@sweetparty.ne.jp>  ■日付 : 02/12/15(日) 11:28  -------------------------------------------------------------------------
   おはようございます

>>'1 : Private Sub CommandButton1_Click()
>>'2 :
>>'3 :  Dim strAddress As String
>>'4 :  Dim Rng As Range
>>'5 :  Dim box(0 To 7) As Variant
>>'6 :  Dim i As Long
>>'7 :  
>>'8 :  strAddress = RefEdit1.Value
>>'9 :  
>>'10:  Set Rng = Range(strAddress)
>>'11:  
>>'12:  If Rng.Cells.Count <> 8 Then
>>'13:    MsgBox "セルは8個ぶん指定して"
>>'14:    Exit Sub
>>'15:    Set Rng = Nothing
>>'16:  Else
>>'17:    For i = 0 To 7
>>'18:      box(i) = Rng(i + 1).Value
>>'19:    Next i
>>'20:  End If
>>'21:  
>>'22:  For i = 0 To 7
>>'23:    Debug.Print box(i)
>>'24:  Next i
>>'25:  
>>'26:  Set Rng = Nothing
>>'27:    
>>'28:End Sub
>
>なるほど、取得値をいったんString型変数に入れてから
RefEditで取得した値はString型です。
なのでいったん、String型の変数に入れたけど、この場合直接入れても良かったかも・・

>Range型、Range関数(配列?)にて使用するのですね。
Range関数??
Range(strAddress)・・のことかな?
プロパティちゃうかな?ヘルプ読んでみてください。

>>ちょっと、【Redim box(0 To 10) As Variant】これの意味がよくわからないのです
>これは要素数11個のVariant型配列boxについての宣言です。
>入力値より多い要素数だから? ^^;
Redimで、再宣言・・しかも、要素数が多いので、何か意味があるのかな?と思ったんです。

>あと、正しい結果がうまく表示されませんでしたので'23行目を
>Cells(i + 1, 2) = box(i) 'B1からB8に表示
>とさせていただきました。
23行目は、結果をイミディエイトウインドウに表示させてみました。
お使いになったことないですか?
VBEの表示の中にあります。結果をどう扱うかわからなかったのでこうしてみました。
デバック時とかに便利です。
一つだけ確かめるときはメッセージボックスが便利なんだけど、今回みたいに複数の結果表示を一度に確かめるときに便利♪

あ、もしかしてそれが上手く表示されなかったのかな?
こちらでは、ちゃんと表示されたんやけど・・・・
 ───────────────────────────────────────  ■題名 : Re:RefEditで取得した値を配列(変数)に格...  ■名前 : やま  ■日付 : 02/12/15(日) 18:08  -------------------------------------------------------------------------
   >>>'1 : Private Sub CommandButton1_Click()
>>>'2 :
>>>'3 :  Dim strAddress As String
>>>'4 :  Dim Rng As Range
>>>'5 :  Dim box(0 To 7) As Variant
>>>'6 :  Dim i As Long
>>>'7 :  
>>>'8 :  strAddress = RefEdit1.Value
>>>'9 :  
>>>'10:  Set Rng = Range(strAddress)
>>>'11:  
>>>'12:  If Rng.Cells.Count <> 8 Then
>>>'13:    MsgBox "セルは8個ぶん指定して"
>>>'14:    Exit Sub
>>>'15:    Set Rng = Nothing
>>>'16:  Else
>>>'17:    For i = 0 To 7
>>>'18:      box(i) = Rng(i + 1).Value
>>>'19:    Next i
>>>'20:  End If
>>>'21:  
>>>'22:  For i = 0 To 7
>>>'23:    Debug.Print box(i)
>>>'24:  Next i
>>>'25:  
>>>'26:  Set Rng = Nothing
>>>'27:    
>>>'28:End Sub
>>

つんさま 度々のご指摘、誠に有難う御座います。

>Range関数??
>Range(strAddress)・・のことかな?
>プロパティちゃうかな?ヘルプ読んでみてください。
'10行目ですね。Range()って形式で、strAddressを引数に戻り値を返してくれる
のでは…って思いました。勘です。スイマセン^^;

>ちょっと、【Redim box(0 To 10) As Variant】これの意味がよくわからないので
>Redimで、再宣言・・しかも、要素数が多いので、何か意味があるのかな?と思ったんです。
意味ないですw セル内の値を入れるための”ハコ”として用意しました。
配列の宣言=Redim〜と覚えてしまったので…

>あと、正しい結果がうまく表示されませんでしたので'23行目を
>Cells(i + 1, 2) = box(i) 'B1からB8に表示
>とさせていただきました。
>23行目は、結果をイミディエイトウインドウに表示させてみました。
>お使いになったことないですか?
よくわからないです。
こちらの環境:Win98&Excel2000では表示されませんでした。   
確かに便利そうですね。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 455