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】にそれぞれ 格納することは可能なのでしょうか? よろしくお願い致します。 |
やま さん、こんばんは >例えば、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で範囲指定したセルの値が配列に代入されているようです。 お試しくださいまし。 |
>'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に表示 とさせていただきました。 |
おはようございます >>'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の表示の中にあります。結果をどう扱うかわからなかったのでこうしてみました。 デバック時とかに便利です。 一つだけ確かめるときはメッセージボックスが便利なんだけど、今回みたいに複数の結果表示を一度に確かめるときに便利♪ あ、もしかしてそれが上手く表示されなかったのかな? こちらでは、ちゃんと表示されたんやけど・・・・ |
>>>'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では表示されませんでした。 確かに便利そうですね。 |