• 締切済み

エクセルのマクロで、知恵をお貸しください。

エクセルのマクロで、知恵をお貸しください。 A1 A2 A3 A4 A5にあるオートシェイプ(矢印)  →  →  →  →  → を範囲選択で、 (1)B1以降横につなげるマクロは、できますか。   →→→→→ (2)B1とB2に交互に(列は重ねず)並べるマクロは、可能でしょうか。   → → →    → →

みんなの回答

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.5

出来るだけわかりやすいコードにしたつもりですが RETUという変数とGYOUという変数が順番(変数 i が増えるごと)に変わっていきます。 Sub Test3() For i = 1 To ActiveSheet.Shapes.Count RETU = i GYOU = i - Int(i / 2) * 2 If GYOU = 0 Then GYOU = 2 Cells(i, 1).Cut Cells(GYOU, RETU) Next End Sub で試してみてください。 iが1から順に増えていくので、その時のGYOUとRETUの値がどの様に変わるか一度、手計算で表にでもしてみてください。 原理がわかると思います。必要であれば応用してください。

  • watabe007
  • ベストアンサー率62% (476/760)
回答No.4

>を範囲選択で、 参考に セル範囲選択で(1)の動作 Sub Test1()   Dim Sh As Shape, i As Long   Dim myRang As Range   Set myRang = Selection   i = 1   For Each Sh In ActiveSheet.Shapes     With Sh       If Not Intersect(myRang, .TopLeftCell) Is Nothing Then         i = i + 1         .Left = Cells(1, i).Left + (Cells(1, i).Width - .Width) / 2         .Top = Cells(myRang.Row, 1).Top + (Cells(myRang.Row, 1).Height / 2)       End If     End With   Next End Sub セル範囲選択で(2)の動作 Sub Test2()   Dim Sh As Shape, i As Long   Dim myRang As Range, myR As Long   Set myRang = Selection   i = i + 1   For Each Sh In ActiveSheet.Shapes     With Sh       If Not Intersect(myRang, .TopLeftCell) Is Nothing Then         i = i + 1         .Left = Cells(1, i).Left + (Cells(1, i).Width - .Width) / 2         myR = i Mod 2         .Top = Cells(myRang.Row + myR, 1).Top + (Cells(myRang.Row + myR, 1).Height / 2)       End If     End With   Next End Sub

ranaruheaven1
質問者

補足

みなさん、ありがとうございます。 Test1 シェイプの長さが違うと、挙動がおかしくなります。 Test2 なぜか動きません。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.3

>A1からA5を、B1とB2へ >A6からA9を、B6とB7へ >A10からA17を、B10とB11へ移動させたいのです。 を勝手に A1をB1へ、A2からA5をB2へ A6をB6へ、A7からA9をB7へ A10をB10へ、A11からA17をB11へ移動させたいのです。 と解釈して Sub Test2() For i = 1 To ActiveSheet.Shapes.Count RETU = 2 GYOU = i If i - Int((i - 1) / 5) * 5 > 2 Then GYOU = 2 + Int((i - 1) / 5) * 5 Cells(i, 1).Cut Cells(GYOU, RETU) Next End Sub 状況に合わせてRETUとGYOUの式を変えて使ってください。 変数 i は1から順にひとつづつ増えていきます。 オートシャイプの数と同じになったら終わりになります。

ranaruheaven1
質問者

補足

ありがとうございます。 No2の解答の方は、願った動きをしましたが選択行だけをできないものでしょうか。 No3の解答の方は、申し訳ありませんが、No2を2行のなかで、交互に表示させたいのです。 ---→→→→→--→-→→→--→ 上記を下記にしなければならないのです。 ---→ → →   -→ →    → → --→  → --→ 難しい質問にお付き合いいただき、感謝します。 できれば、よろしく、お願いいたします。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

>A1からA5を、B1とB2へ 5つセルにあるオートシェイプを2つのセルに? 補足説明がまだ必要な気がします。 とりあえず、For文の使い方として参考コードを提示しておきます。 もちろん、新しいブックでテスト用に作動させてみてください。 Sub Test1() For i = 1 To ActiveSheet.Shapes.Count Cells(i, 1).Cut Cells(1, 1 + i).Select ActiveSheet.Paste Next End Sub

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.1

マクロの記録でダメでしょうか? (1) マクロの記録の開始 A1:A5 を選択、コピィ B1を選択、値を選択して貼り付け、ウィザードの右下の 行列を入れ替え にチェックをいれてOK マクロの記録の終了 (2) 同様ですが マクロの記録の開始 A1:A5 を選択、コピィ B1を選択、値を選択して貼り付け、ウィザードの右下の 行列を入れ替え にチェックをいれてOK C1を下へ移動、E1を下へ移動 マクロの記録の終了 行数が多数あるのであれば、For~Next文で繰り返し実行させます。

ranaruheaven1
質問者

補足

すいません、質問内容が、不足していました。 行数が一定していないのですが、どう記録できますでしょうか。 For~Next文が、初心者であまり理解できていません。 A1からA5を、B1とB2へ A6からA9を、B6とB7へ A10からA17を、B10とB11へ移動させたいのです。

関連するQ&A

  • エクセルマクロに詳しい方

    いつもご質問ばかりで申し訳ございません。 エクセルのマクロで質問なんですが、ある列のある範囲(例えばG列の3~20)の各セルの間(G3とG4、G4とG5といった感じです)にオートシェイプの矢印マークを書き込む マクロって可能なのでしょうか?矢印の向きは左向きで、長さは矢印のみぐらいの長さで、矢印の角度はなしです。 もしこんなマクロが可能なら教えて下さい。 よろしくお願い致します。          以  上

  • EXCEL 範囲指定後矢印線を引くマクロの作り方

    範囲選択した任意(例:A1~C1)のセルに、オートシェイプの矢印線を自動的に引くマクロの作り方を教えて下さい。 できれば、矢印線の始点にオートシェイプの丸(黒丸ではなく白丸)も一緒に引けるマクロも教えて下さい。 範囲指定するセルの長さは一定ではなく、長さがいろいろになります。 工程表を作成するにあたり、同じ手順を繰り返す為、マクロ化したいです。

  • excelの印刷用マクロ。

    excelで分からない事があり困っています。 横がA~I列、縦がB列のB-1から文字が入力されている最後の行までの範囲を選択して、印刷するマクロを作りたいのですが、どうすればよろしいでしょうか。印刷したいシートには、オートフィルタが掛かっている場合もあります。その場合は、その状態のまま印刷出来る様にしたいです。 どなたか分かる方が居ましたら回答お待ちしています。 よろしくお願いします。

  • Excel マクロについて

    Excelで、セルを選択して、マクロを実行すると、その選択したセルに赤マル(オートシェイプの)がはいるようなマクロをつくりたいのですが・・・。まだ、マクロは使ったことが無いもので・・・。詳しくお願いします。

  • エクセル マクロ

    度々の質問恐縮しております。 エクセルにて記録マクロを作成しました、オートシェイプにマクロを登録しようとしたら選択出来ない状態(薄いグレー)の表記になっております、どこか設定があるのでしょうか?久ぶりのマクロ使用でとまどっております。 誰か御教授ください。

  • エクセルで連番をマクロで

    こんにちは いつもお世話になっています。 Windows7、エクセル2010で教えてください。  B3から仮にB100まで文字列があるとします、空白セルはありません。 この状態でA3からA100まで1から始まる連番をマクロで実行したいのです。 実際はB列のデータの最終行は不定です。つまり、B列にデータがなくなるまで(空白セルになるまで)A列に連番をつけたいのです。現在はA3,A4に1,2と入力し、オートフィルで該当セルを選択し「予測」で連番をつけています。 マクロ記録ではB列にデータがなくなる判断ができなくて作れません。 この作業が頻繁にあるものですからマクロができれば助かります。 よろしくお願いいたします。

  • Excel データコピーのマクロ

    ExcelでAというファイルのデータをBというファイルにコピー&ペーストするマクロを組みたいと考えています。 本当はAファイルを開かずにできるとベストなのですが、 マクロを実行する(マクロ登録したオートシェイプを押す)とAファイルを開き、 Bファイルにコピペが終わればAファイルを閉じるという動作を行うマクロは組めるでしょうか? どなたか、ご存知の方が居られればお教え願います。 よろしくお願いいたします。

  • エクセル2007でのオートシェイプのマクロ記録

    エクセル2007でのオートシェイプのマクロ記録ができません。 エクセル2000、エクセル2003では、可能です(テスト済)。 2007でのオートシェイプのマクロ記録のやり方は何か特殊なのでしょうか。 たとえば、エクセル2007の開発タブから「マクロの記録」を選び、楕円を描いてマクロ記録を終了し、VBEでそのマクロを開いても、題名等はあるものの sub 題名()から End Sub までの間にコードはなく空白になります。 おわかりの方にお尋ねします。 検索してみましたが、件数が多く閲覧した範囲では、見当たりませんでしたので、よろしくお願いします。

  • EXCELマクロ 最終データまでの範囲選択

    こんにちは。 EXCELマクロでデータの範囲選択の方法を教えてください。 A1~A10には10個のデータ(固定) B2~不定のデータ この範囲を選択する方法を教えてください。 (『 みたいにA列に固定データがあるのでうまく 範囲をひろえません。)

  • エクセル2007のマクロ

    どなたか教えて下さい。 エクセル2007で、図形とオートシェイプを同時に選択するマクロを教えて下さい。 今まで、エクセル2003では Selection.ShapeRange.Group.Select で、一発で選択できていましたが、エクセル2007に変わって動かなくなりました。 オートシェイプだけは、グループ化は出来たのですが、図形とのグループ化する方法が分かりません。 目的は、エクセルの図形の挿入で読込んだ図形の上に、エクセルのカメラで読込んだリンク図形(複数)を一緒にグループ化を行い、ペイント等でビットマップファイルを作成したいのです。 グループ化できた後は、手動でペイントに貼り付け、保存するつもりです。 よろしくお願いします。

専門家に質問してみよう