Excel VBA質問箱 IV

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

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


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

【37121】セルの転記 マキチャン 06/4/22(土) 15:02 質問[未読]
【37122】Re:セルの転記 Statis 06/4/22(土) 16:07 回答[未読]
【37124】Re:セルの転記 マキチャン 06/4/22(土) 20:01 質問[未読]
【37125】Re:セルの転記 かみちゃん 06/4/22(土) 20:13 発言[未読]
【37126】Re:セルの転記 マキチャン 06/4/22(土) 20:37 お礼[未読]

【37121】セルの転記
質問  マキチャン  - 06/4/22(土) 15:02 -

引用なし
パスワード
   2点教えてください。
例えばセルA1,B1,D5に数値の1,2,3がそれぞれ入っていたとします。
これをA1はE1に、B1はF1に、D5はG1に転記する場合
        .
        .
        
  Set A = Union(Range("A1:B1"), Range("D5"))
  Set B = Range("E1:G1")

    For Each I In A
      B(I).Value = A(I).Value
    Next I

1.こうすると、A1,B1の値は、E1,F1に転記されますが、D5の値は転記
  されません。いろいろテストしてみるとどうも、A2の値がG1に転記されます。
  すなわち、UNIONで離れたセルをつけても、FOR EACHの中では
  はじめの、A1:B1のRENGEの中を順に探していき、個数は3個なので
  A2までを対象にしてしまっているようです。これをきちんと、D5をG1に
  転記させる方法は無いのでしょうか。配列などを使えばできそうですが、
  UNIONでは、無理なのでしょうか?

2.上記の記述に何か誤りはあるのでしょうか。有ればどう修正すればいいのでし
  ょうか?
  というのは、A1、B1などの対象となっているセルの値が数値なら
  動くのですが、文字にすると、実行時エラー”13” 型が一致しません。
  のエラーメッセージでできません。
  どちらかというと文字データで使う場合のほうが多いので、文字でもできる
  ようにしたいです。

以上2点よろしくお願いします。

【37122】Re:セルの転記
回答  Statis  - 06/4/22(土) 16:07 -

引用なし
パスワード
   こんにちは

これで如何かな?

Sub Test()

Dim A As Range, B As Range, c As Range, i As Long

Set A = Range("A1:B1,D5")
Set B = Range("E1:G1")
i = i + 1

For Each c In A
   B(i) = c.Value
   i = i + 1
Next c

End Sub

【37124】Re:セルの転記
質問  マキチャン  - 06/4/22(土) 20:01 -

引用なし
パスワード
   Statis さん 回答ありがとうございます。
 なるほど、
 > Dim A As Range, B As Range, c As Range, i As Long

 > Set A = Range("A1:B1,D5")
 > Set B = Range("E1:G1")
 > i = i + 1

 >  For Each c In A
 >    B(i) = c.Value
 >    i = i + 1
 >  Next c
 これで、私の意図していたことは実現できます。

私はまだ、For Each をよく理解してないようです。
>  For Each c In A
の意味合いを解説していただけるとありがたいのですが。
Aの範囲の中をひとつずつCというRENG変数にセットするというような
意味合いでしょうか?


 

【37125】Re:セルの転記
発言  かみちゃん  - 06/4/22(土) 20:13 -

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

>私はまだ、For Each をよく理解してないようです。
>>  For Each c In A
>の意味合いを解説していただけるとありがたいのですが。
>Aの範囲の中をひとつずつCというRENG変数にセットするというような
>意味合いでしょうか?

For Each...Next ステートメント
のヘルプはご確認されていますか?
おおむねそのような理解でいいと思いますが・・・

Sub test()
 Dim c As Range
 For Each c In Range("A1:B3")
  MsgBox c.Address
 Next
End Sub

【37126】Re:セルの転記
お礼  マキチャン  - 06/4/22(土) 20:37 -

引用なし
パスワード
   かみちゃん さん早速の回答ありがとうございます。
おかげさまで理解できたと思います。
ヘルプを見ても今ひとつ、理解できませんでした。
ありがとうございました。

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