義理チョコも、もらえなかったKen3です。
(自分へ一言、、、おいおい、メルマガに関係ネエだろが、、、そうですね)
ってのは、置いといて、(あと、チョコ画像シャレで送るの止めてください、)
今回は、久しぶりに、Excel VBA 関係?です。
*なんて大きく言ってますが、たいしたことないです。
あっ、逃げないで下さい、そろそろ、まじめに始めますから。
下記の質問をいただきました。チョット長めですが。
------------------------------------------------------
 >マクロの記録くらいは前から使ってたんですが、
 >最近VBAの方に近寄りつつある初心者です。
 >
 >で、今、作成しているマクロがうまくいきません。
 >多分とっても初歩な部分が判ってないからだとは
 >思うんですが、どうしていいやらさっぱりです。
 >
 >すみません。お手数ですが、是非、ご教授下さい。 
 >
 >やりたいこと。
 >・x1・x2とy1・y2の2組の数値の比較結果(大小)から、
 >該当する図形(□が二つ組み合わさったもの)を判断し、
 >各項目の下に貼り付けたい。(項目は全部で10個)
 >
 >今出来ていること。
 >・数値を判断して、"AI4:AM4", "AI6:AM6"の各セルに
 >"Case1"〜"Case4"を表示。(シート上(IF)で処理)
 >・基本図形(4通り)にそれぞれ"Case1"〜"Case4"の
 >名前を付け、上記セルの値に応じてそれぞれをコピーする。
 >(この部分は以下の様にかきました)
 >
 >  For Each BoxRange In ActiveSheet.Range("AI4:AM4", "AI6:AM6")
 >        Select Case BoxRange
 >            Case Is = "Case1"
 >                    Case1.Copy
 >            Case Is = "Case2"
 >                    Case2.Copy
 >            Case Is = "Case3"
 >                    Case3.Copy
 >            Case Is = "Case4"
 >                    Case4.Copy
 >        End Select
 >    ※
 >    ActiveSheet.Paste
 >
 >"AI4:AM4", "AI6:AM6"の下("AI5:AM5", "AI7:AM7")に
 >それぞれ、どこに貼りつけるか、セル番地を入れてます。
 >(D2,D16,D30,D44・・,O44,O48といったように)
 >
 >※の処にどう書けば、うまく動いてくれるのでしょうか?
 >
 >OffsetとCollectionの辺りをじたばた試してみましたが、
 >だめでした。書き方が間違ってたのかも・・。
 >
 >きっとす・・・ごくつまらない質問だと思います、すみません。
 >でも・・もうどうしていいか判らない状態になってしまいました。
 >
 >VBAの入口でじたばたしている私に救いの手を。
 >どうかよろしくお願い致します。
------------------------------------------------------
なんか、おしい、、あと少しって気がする。
ここまで、できてれば、と思いますが、勝手にあとひと押し作ってみます。
*実行サンプルをダウンロードして、動きをみてください。
まずテストで、下記のようなテストの表を作成します。
 A  B  C  D  E  F  G  H     I     J     K     L
1
2                     Case1 Case2 Case3 Case4 Case2
3                     B6    B7    C8    C9    A10
4                     Case2 Case3 Case4 Case3 Case4
5                     A6    E8    F10   C12   A12

処理内容は、H2:L2,H4:L4の範囲を選択し、
条件を判断します(文字列、Case1から4まででどの画像をセットするか判断)
判断後、目的の画像を選択します。
次に、その下のセルの番地へ、画像を貼り付けます。
これを範囲数分繰り返します。
'--- 下記、私が作成したサンプルです 
Sub Macro1()
    
    Dim boxrange As Range    '処理範囲
    Dim x As Integer
    Dim y As Integer
    
    'さてと、ループで回しますか、、、
    For Each boxrange In ActiveSheet.Range("H2:L2,H4:L4")
        '位置を取りだし、ワーク変数に代入
        x = boxrange.Column
        y = boxrange.Row
        '中身をテストで表示
        MsgBox Cells(y, x) & "を判断して" & Cells(y + 1, x) & "にセット"
        'セットしたい図形をselect文で判断
        Select Case boxrange
            Case "Case1"
                    ActiveSheet.Shapes("case1").Copy
            Case "Case2"
                    ActiveSheet.Shapes("case2").Copy
            Case "Case3"
                    ActiveSheet.Shapes("case3").Copy
            Case "Case4"
                    ActiveSheet.Shapes("case4").Copy
            Case Else
                    '選択されない時、どうすんの? エラーチェックは?
        End Select
        'セットする位置(D10)などの文字を取りだし、そのセルを選択
        Range(Cells(y + 1, x)).Select   'ポインタみたいな間接参照?
        ActiveSheet.Paste 'コピーした図形を貼る
    Next
    
    '適当なセルを選択して、終わりにする(図形が選択されたままなので)
    Range("H7").Select
    
    'エラー処理入っていないけど、こんな感じです。
    
    '素朴な疑問、データを変更して、再実行した時、前回の図形を消したいのでは?
    
End Sub
'----------------------------------------------------------------
とりあえず、実行結果は下記のようになります。

ポイントは、
範囲数分繰り返したいので、Rangeオブジェクトを使用し、
For Each文で回します(コレの詳細解説も、宿題だなぁ、、、たぶん)
>For Each boxrange In ActiveSheet.Range("H2:L2,H4:L4")
次のポイントが、.Column , .Row プロパティを使用して、
現在処理中のセルの位置を取り出します。
>       '位置を取りだし、ワーク変数に代入
>        x = boxrange.Column
>        y = boxrange.Row
でセルの位置がわかるので、
それを使用して、今度はYに1を+した(一行下の文字を取り出します)
>        'セットする位置(D10)などの文字を取りだし、そのセルを選択
>        Range(Cells(y + 1, x)).Select   'ポインタみたいな間接参照?
^^^^^^^^^^^^^^^^^^↑複雑そうですがRange("D10").Select みたいな感じで、
          文字列の指すセルを選択できます。
最後に、選択されたセルに、貼りつけています
>      ActiveSheet.Paste 'コピーした図形を貼る
処理を行ってます。
なんか、回りくどいやりかたのような、、、
(*Ken3得意のできたからイイヤプログラム、、
   Activeがあったり、無かったり行儀悪い、、、
     動きゃいいってもんじゃないでしょ)
また、これは蛇足だ、、私ならこう処理する、、
この切り口は?
など、この例題処理?課題?のうまい調理法、思いついた人は、
気軽にご指摘・文句なんでも下さい。
*でも、チョコ画像はイリマセンよ、、、少しはうれしかったけど。
 (今回は、かなり困った、、イジメられた、、BMPじゃなくてせめて
   JpgかGifで下さいよ、、、)
今日の一言、、
 今日も、マクロ記録+簡単なプロパティの紹介でまとめやがって、、
  具体的に使える、 
   プロらしいテクニックないの?、、、(VBAソースの書き方汚いしねぇ)
やっぱ、三流だなぁ、、と声が聞こえてきたところで、このへんで、、
今日も逃げ出す、、、悪人 Ken3 でした。。。
質問や要望など連絡方法でお互い確認が取りやすく、便利なのが掲示板なのですが、私の対応のまずさから不定期で荒れてしまい、掲示板は現在封鎖中です。(反省しなきゃ)
| 感想や質問・要望・苦情など 三流君へメッセージを送る。 時間的余裕のある要望・質問・苦情の場合は、下記のフォームからメッセージを送ることができます。 | 
| ←パソコンの技術系の書籍を探しているなら コンピュータ関連の出版社33社(アスキー、インプレス等)が共同運営するコンピュータの本・専門店 ※種類が豊富で探し易い※在庫ありが48時間以内発送 |