• ベストアンサー

エクセルのマクロ中で

imogasiの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

#3です。 Sheet1と同じ位置のセルにコピーしたい場合 Sub test01() Dim cl As Range For Each cl In Selection r = cl.Row c = cl.Column Worksheets("sheet2").Cells(r, c) = cl Next End Sub で良いはず。これをボタンのクリックイベントプロシジュアにすれば良い。 補足の件はなんか難しくしているように見える。 Selection.AreasにしなくてもSelectionで良いのでは。 E14以下にもって来たいなら、 #3を Sub test02() Dim cl As Range i = 14 For Each cl In Selection Worksheets("sheet2").Cells(i, "E") = cl i = i + 1 Next End Sub に改めればよい。

yanyanyanyan
質問者

お礼

回答ありがとうございます。 なるほど。。。っていうほどまだ精通してませんが じっくり読み砕いて理解していきたいと思います。 しかし色々なアプローチの仕方があるんですね。。。 スゴイの一言。

yanyanyanyan
質問者

補足

試してみましたー For Each ws In Worksheets If (ws.Name <> "データシート") And (ws.Name <> "整理後") And (ws.Name <> "リスト") Then For i = 8 To 26 Step 2 この部分書き足したいんですがどうすればいいんでしょう(泣) 自分で色々試したんですが全然駄目で泣きそうです。

関連するQ&A

  • EXCELマクロデータのある行より下の行削除の構文

    EXCELマクロ構文について教えてください。 データのある行のひとつ下の行全体選択し、 Ctrl+Shift+↓で下部行全て選択し、右クリックで削除する 操作をマクロにしたいのでですが、 マクロ記録では上の操作は Rows("189:189").Select Range(Selection, Selection.End(xlDown)).Select Selection.Delete Shift:=xlU  になります。 この 189 という数字は 下記の変数定義で「lastRow」として取得できるのですが Dim lastRow As Long lastRow = Sheets("2CVS関西").Cells(Rows.Count, 2).End(xlUp).Row + 1 189にlastRow に置き換える方法お教えください。

  • エクセルマクロで行き詰っています!!

    仕事でマクロを作成しているのですが、行き詰っています。 助けて下さい。 1行目には各項目があり、A行~F行まで、最終行は不定期 各行には個人情報があります。(1行目は項目欄) 2行目をコピーし3行目と4行目と5行目に行を挿入 3行目と4行目と5行目に2行目の情報を貼り付け 6行目をコピーし7行目と8行目と9行目に行を挿入 7行目と8行目と9行目に6行目の情報を貼り付け -繰り返し- 最終行をコピーし最終行の下3行目まで最終行の情報を貼り付け 要は2行目がAさんの情報だとすればAさんの情報とまったく同じものを3行目4行目5行目に挿入したいのです。 6行目がBさんの情報だとすればBさんの情報とまったく同じものをまた全部で4行作りたいのです。 30人のお客さん情報があれば2人のお客さん情報しかないときもあります。 最終行目が不定期なことと、空白じゃないセルまで繰り返すにすると最終行で永遠コピーされてしまうことが悩みです。 同じ結果であれば、方法が違ってもいいです。 マクロ初心者です。 私が作ったマクロは空白を挿入することしか出来ませんでした。 sub test2() range("a2:f2").select range(selection,range("a2:f2").end(xldown))).select dim colleft as long dim colright as long dim i as long application.screenupdating=false colleft=selection(1).colum colright=seletion(selection.count).column for i = selection(selection.count).row to selection(1).row+1 step -1 range(cells(i,colleft),cells(i,colright)).resize(4).insert(xlshiftdown) next i application.screenupdating=true end sub 上記が私が作れたマクロです。 作れたといってもいろんなサイトよりコピーして加工しただけなので、 不要なところも多々あるかと思います。 期限がせまっているので切羽詰っています。 誰か助けていただけませんか? よろしくお願いします。

  • エクセルのマクロ

    Sub test() x = Selection.Row y = Selection.Column z = Selection.Columns.count Range(Cells(x, y), Cells(x, y + z - 2)).Select Selection.ClearContents End Sub 上記マクロは、同一行の連続するセルを二つ以上選択状態にして実行すると、範囲内の最も右にあるセルの値のみが残って他のセルの値は全て消去されます。 上記マクロを、複数のセレクションに対して対応できるようにするには、どうすればいいでしょうか? 例えば、c1~f1、d3~h3、e10~g10を選択して実行すると、f1とh3とg10の値のみ残って他の値は消えるということです。

  • エクセルのマクロについてお願いいたします。

    エクセルのマクロについてお願いいたします。 E10~M10の500行全てのセルに数式が入っております。 そこでマクロにてコピーのボタンを設置しようと思ってます。 Range("E10:M10" & Range("M" & Rows.Count).End(xlUp).Row).Copy 画像のような数字の結果がある部分だけコピーをしたいです。 23行目からは数式が入ってますが結果は””空白になっております。 どうぞよろしくお願いいたします。

  • エクセルのマクロ セルの結合プロシージャを教えてください。

    マクロの記憶でのプロシージャを Rangeを変数型にしたいのです。 行も列も定めまずに、範囲はA1:BX45です。 Offsetを使うのか、もう何がなんだかわからないので 教えてください!! マクロの記憶でのプロシージャです。 ↓ Keyboard Shortcut: Ctrl+d ' End Sub Range("R26:T27").Select With Selection .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter .WrapText = False .Orientation = 0 .AddIndent = False .IndentLevel = 0 .ShrinkToFit = True .ReadingOrder = xlContext .MergeCells = False End With Selection.Merge End Sub

  • excel: マクロ表記について

    マクロ表記について Range("E2").Select Selection.AutoFill Destination:=Range("E2:E2153"), Type:=xlFillDefault 上記はEXCELのマクロの式なのですが、この2153という数字が d = Range("A65536").End(xlUp).Rowのdという値と同じ場合、2153という数字をださないでdを使った表現ができますか。

  • エクセルマクロで長文です

    いつも皆様 度々教えて頂いて有り難うございます。 おかげさまで何とかいいところまで作成する事ができました。この場を借りて皆様に御礼申し上げます。  そこでしつもんなのですが、以下のマクロにおいて  (変数等の指定は省略します) columns("c:c").interior.colorindex = xlnone cnt = 3 temp = range("a6").value cells(cnt,3).resize(temp).interior.colorindex = 16 select case count1 case 1 cells(cnt,4).resize(temp).select selection.bordersaround linestyle:=xlcontinuous selection.bordersaround weight:=xlthin case 2 途中省略    case 4 (cells(cnt,4),sells(cnt,7)).resize(temp).select selection.bordersaround linestyle:=xlcontinuous selection.bordersaround weight:=xlthin とあるとします。  case4 の場合になぜか各セルの中にまで縦線の罫線が  入ってしまいます。 僕のイメージとしては範囲の大外のみの罫線と下線のみを 引きたいのですが、何処がまちがっているのでしょうか。 皆様お知恵をお貸し下さい。

  • Excelマクロ

    お世話になります。 Excelのマクロに関する質問です。 目的としては、D列に様々な文言が入っており、 D列に記入されている各文言の数をカウントしたいと思っています。 ただし、D列の各文言が複数あった場合でも、 A列が同じ値の場合は数に含めない、という条件があります。 ex)D列に「りんご」という文言が10個あります。   D列に「りんご」と記入されている行のA列は、 「赤」「青」の2パターンしかありません。 ⇒この場合、「2」とカウントしたいです。 現在、以下のマクロを考えています。 =========================================================== sub test() Dim i As Long, x As Long, cnt As Long, buf As Object '「i」「x」「cnt」を数値として定義。「buf」にD列の値を格納します。 x = 4 '4行目以降を対象としています。 Do While Cells(x, 1).Value <> "" 'A列が空白でない場合のみを対象とします。 cnt = 0 '各行のD列に入っている値の数を数えるため、まずはカウントを0にします。 i = 4 '4行目以降を対象としています。 Set buf = Cells(x, 4) ' D列の値を変数「buf」に格納します。 Do While Cells(i, 1).Value <> "" 'A列が空白でない場合のみを対象とします。 If Cells(i, 4).Value = buf And Cells(i, 1).Value <> Cells(x, 1).Value Then  ' D列の値が「buf」に格納した値と同じ、かつ、       ' A列の値が、bufに値を格納した時と異なる場合のみ対象 cnt = cnt + 1 '数を数える対象であれば、+1します。 End If i = i + 1 '次の行に移るために+1します。 Loop Cells(x, 5).Value = cnt ' E列にcntに格納された値を入力 x = x + 1 '次の行に移るために+1します。 Loop end sub ===================================================== 上記のマクロでは、E列にカウント後の数らしいものが入力されるのですが、 値が正しくないようです。 お力添えをいただけますでしょうか。 よろしくお願いいたします。

  • エクセルのマクロ

    縦方向に連続したセルを選択状態にした時に、選択セルを基点として右横方向に連続してデータが入力されているセルを罫線で囲う、という処理をマクロで実行したいのですが。 例えば、以下の図で黒丸がデータ入力セルであるとすると、C1~C4を選択状態にして実行すると、C1~D1とC2~F2とC4が罫線で囲われます。  AB CD EFG 1○●●●○○○ 2●●●●●●○ 3○○○○○○○ 4●●●○○○○ 以下のマクロを実行すると、上図の3行目と4行目のところがかなり余計に罫線が引かれてしまいます。どう修正すればいいでしょうか? Sub test1()  yc = Selection.Rows.count  aa = ActiveCell.Address  For y = 0 To yc - 1  ActiveCell.Offset(y, 0).Select  Range(ActiveCell, ActiveCell.End _       (xlToRight)).Select        With Selection.Borders(xlEdgeLeft)       .LineStyle = xlContinuous       .Weight = xlThin       .ColorIndex = xlAutomatic    End With    With Selection.Borders(xlEdgeTop)       .LineStyle = xlContinuous       .Weight = xlThin       .ColorIndex = xlAutomatic    End With    With Selection.Borders(xlEdgeBottom)       .LineStyle = xlContinuous       .Weight = xlThin       .ColorIndex = xlAutomatic    End With    With Selection.Borders(xlEdgeRight)       .LineStyle = xlContinuous       .Weight = xlThin       .ColorIndex = xlAutomatic    End With    Range(aa).Select   Next y End Sub

  • エクセルのマクロ 最終行取得後の作業

    エクセルのマクロで(エクセル2010を使用) Range("A1:A900").Select Range("A" & Rows.Count).End(xlUp).Select i = Selection.Row 上記の900がセルの最終行で最終行数を取得し、iを利用して  Range("A1:A & i ").Select といった感じで使用したいのですが記述がわかりません。 申し訳ございませんが()内の書き方を教えてください。