質問: 他シートの指定項番の行にコピーするマクロを作りたい 現在sheet1のa21からq21の17個のセルにデータが入っています。(これは同じシート内の データが飛ぶようになっているので厳密には計算式が入っています。なぜならその個々のデータのセルが点在しているためです)また、e14に項番を入力するセルがあります。 そしてsheet2のa列に項番が振られており、b~r列のa行に17個の項目名が入っています。 このエクセルで、e14に項番を入れて実行すれば、sheet1のa21からq21のデータを sheet2の先と同じ項番の行のb~r列にコピーするマクロを作りたいのですが うまくいきません。どのようなコード書けばよいのでしょうか;
回答: 具体的なアナタのエクセルの姿にキチンと正確に合った姿で、マクロは作らないと意味がありません。 それから。項番を入力する「e14」には、何か計算式で現れるんじゃなく、実際に手で記入する事が前提です。 たとえば。 「項番」が単純な1,2,3...で、その番号の1,2,3がシート2の2行目、3行目、4行目...に対応しているなら。 手順: シート1のシート名タブで右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub worksheet_change(byval target as excel.range) if target.address <> "$e$14" then exit sub if target = "" then exit sub worksheets("sheet2").range("b1:r1").offset(range("e14").value).value = range("a21:q21").value end sub 1,2,3番の対応するシート2の行位置がずれてるなら、それに見合った行に転記するようにご自分でマクロを修正してください。 たとえば。 「項番」が何かの言葉?で、シート2のa列から該当の値をわざわざ検索して探さなきゃならないようなことなら(ついでに言えば、該当する項番が実際にはシート2のa列に記入されていない場合といった事まで考えなきゃならないなら) 手順: シート1のシート名タブで右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub worksheet_change(byval target as excel.range) dim h as range if target.address <> "$e$14" then exit sub if target = "" then exit sub set h = worksheets("sheet2").range("a:a").find(what:=range("e14").value, lookin:=xlvalues, lookat:=xlwhole) if h is nothing then msgbox "not found" exit sub end if h.resize(1, 17).value = range("a21:q21").value end sub 言わずもがなですがこの手のマクロはシートに1つしか登録できないので、別のマクロを試すときはマクロを消して書き換えます。