• 締切済み

助けなてください。

コードが書けず困ってます。ExcelでVBAのコードで以下の作業が出来ずに困ってます。 複数選択したセルの行を取得して 各行の指定したセルを変数に格納、または配列を使い別ブックに貼り付ける 選択した行をコピーし別ブックに貼り付けたいのですが、項目の位置が違うため行ごと貼り付けれないのと、変数に格納して変数を使い回したいと言う上司の要望により配列で別ブックに貼り付けたいのですが 複数選択した行をセルごとに変数に格納させるのがよく分かりません。 全くコードが書けずにいます。 どなたか、VBAコードを教えていただけないでしょうか。 出来れば小学生にも分かるくらい、まるまるもらえると助かります。 心ある方助けていただけましたら幸いです。 よろしくお願いします。

みんなの回答

回答No.5

どこまでできていて、どこができていないのか質問文から読み取れません。 できているコードを記載してください。 あと、条件を後出しにせず、仕様を全て提示してください。

putiabu
質問者

補足

全く書けてません。て書いてます 仕様書は情報漏洩 条件は後回しにしてません。 連続データだと決めつられただけです。 セル指定なんで非連続データも想定するのは相手のスキルによるだけです。

回答No.4

>どなたか、VBAコードを教えていただけないでしょうか。 どこまでできていてどこができないかが質問文から読み取れないので、これまでのできているコードを記載してください。

回答No.3

ブックへの貼り付けなんて、その作業だけマクロ記録して、できたものの無駄を省いて関数化すればいいでしょ。これも無理なのか?

putiabu
質問者

補足

はい、無理ですね。 スキルがあるなら書いて答えてください。

回答No.2

その複数だったのか。 じゃあ、私は動作確認してないけど、 https://excel-vba.blog.ss-blog.jp/2008-11-01 を吟味・改良だね。

putiabu
質問者

補足

これも使えません。 この後ブックの貼り付けもないし

回答No.1

googleで"複数選択したセルの行を取得 VBA"を検索、 ヒットした上位から、 https://www.relief.jp/docs/018031.html よく分からない。 ↓ https://www.tipsfound.com/vba/07021 よく分からない。 ↓ > 選択範囲の『セル数』・『先頭行・先頭列』・『最終行・最終列』・『行数・列数』を取得する https://detail-infomation.com/vba-selection/ できそう。 それを加工して、選択範囲開始行番号、選択範囲最終行番号を返す関数を作ってため込んでいけば、あとで再利用・効率アップする。

putiabu
質問者

お礼

蛇足でネット検索で出来る範囲じゃないんです。書ける人じゃないと答えれないんです。 スキルのある方じゃないと無理なんです。 だから、一から書いて欲しいし血まなこにならないと回答者が見つからないんです。

putiabu
質問者

補足

おしい!選択したデータが連続してないので使えません。 ようはセル選択は 離れているセルも含みます。 だから、難しいんです。

関連するQ&A

  • VBAで入力規則のリスト参照元の値取得

    エクセル2007を使っています。 VBAツールを作っており、その処理で使われる一機能として 「任意のセルに設定されている入力規則のリストの元の値をVBAで取得する」処理を コード中に書きたいと思っております。 ■質問概要  「入力規則のリスト」が設定されている任意のセルを選択したときに、そのセルに設定されている  「入力規則のリスト」の「元の値」をVBAで取得する方法について教えてください。  ※取得した値は配列型の変数に代入するものとします ■想定イメージ  たとえば、次のようなブックで使うことを想定しております(画像参照)  ※実際はもっとデータ量が多いブックで使う予定です  ・「リスト元の値」というシートで「選択言語」という名前でリストを定義化  ・「通常操作するシート」では値を入力したいセルに対し、「入力規則のリスト」の「元の値」を   「=選択言語」で設定  VBAではこの「通常操作するシート」の入力欄のセルを選択している時に「選択言語」で定義されている  データをすべて取得し配列型変数に代入するという動作をさせたいと思っています。     この方法について教えてくださいますようお願いします。

  • エクセル VBA find は別シートを検索できますでしょうか?

    こんばんわ。マクロ初心者です。 皆さんいつも親切なご回答ありがとうございます。 早速ですが質問内容を記入いたします。 ・ブックA を開いています。 選択している行のC列セルの値を検索キーワードにして、 ブックB 内を検索し、検索結果のセルの3つ左のセルの値を、 ブックA で選択していたセルの同じ行のO列(15列目)に入力したいです。 ※ブックBをアクティベートする事無く行えますでしょうか? (他の処理と組合わせて行い、回数も多いので、  ブックA⇔ブックB アクティベートの往復は避けたいです。) 下のようなマクロを作成してみましたがうまくいきません。 どうかご指導よろしくお願いいたします。 --------------------------------------------------------------- dim 検索品目 as string dim fcell as object dim i as integer i = Selection.Row '選択行の3列目セルの値を変数『検索品目』に格納 検索品目 = Cells(i, 3).Value 'オブジェクト変数『fcell』に検索したセルを格納 Set fcell = Cells.Find(What:=検索品目, After:=Workbooks("ブックB.xls").Worksheets("sheet1").Range("G2"), LookAt:=xlWhole, searchorder:=xlByColumns) '検索したセルの3行左のセルの値を変数『オーダ番号』に格納 オーダ番号 = fcell.Offset(, -3).Value 'ブック A の選択行の15列(O列)にデータ入力 Cells(i, 15) = オーダ番号

  • スカラー変数中の改行コードでセパレーションしたい。

    複数行に渡る文字列を含むデータをスカラー変数に格納したのですが 格納後にこれを改行コード(\n)をセパレータとして配列に分けたいと思っています。 データ(abc.txtd)は aaaaaa bbbbbb cccccc といったものです。 $data = "abc.txt"; @array = split (/\n/, $data); としてもうまく配列に分割してもらえないのですが、どうすればよいのでしょうか。 基本的な質問で申し訳ありませんが、どなたかよろしくお願いいたします。

    • ベストアンサー
    • Perl
  • エクセル(VBA)で複数セルのコピーができません

    お世話になっております。 マクロを使って複数のセルを選択してコピーし、別のブックにあるシートへ 貼り付けたいのですが上手くいきません。  Range(Selection, Selection.End(xlToRight)).Select   Selection.Copy 上記のようにコピーしたいセルの入っている行全体の貼り付けは出来たのですが、必要なデータのセルのみ(隣り合っていない)を選択して 貼り付けようとすると何もコピーされていない状態で終了してしまいます。 (変数に代入してコピー等・・・) どなたか教えて下さい。

  • 複数のExcelブックの可視セルを統合VBA

    いつもお世話になっております。 複数のExcelブックの可視セルのみを、別のブックの1つのシートに統合することはできるのでしょうか? やりたいことは、始めに複数人に同一ファイルを配布し、1つのフォルダにそれを纏め、各担当者ごとでフィルタを掛けた部分(可視セル)だけを1つのブックの2シート目(1シート目はAccessにリンクさせています)に纏めたいと思っております。 ファイルは、1行目に集計・2行目に各項目があり、必要データは3行目からです。 VBA初心者の為、どなたかおわかりになる方いらっしゃいますでしょうか? 宜しくお願いいたします。

  • テキストファイルの各行を配列に格納するには?

    お世話になります。vb6でテキストファイルを読み込み、各行を配列に格納するコードを教えて下さい。

  • [マクロ]配列を区切り文字で変数に格納する方法

    タイトルの通りなのですが、 例えば、 A1~B10にランダムな数字が入っています。 (1)A1~B10を配列Cに格納します。 (2)配列C(1,10)を変数test1に格納します。  ※その時に各配列を/で区切る (3)配列C(2,20)を変数test2に格納します。  ※その時に各配列を/で区切る (4)test1をセルC1に記入 (5)test2をセルC1に記入 のような感じです。 配列に格納する方法はさすがに分かるのですが、区切り文字を入れて変数に格納する方法が分かりません。。。。 ご教授お願いいたします。

  • 同フォルダ内複数BOOKを一つのBOOKにまとめる

      『同じフォルダ内の複数BOOKのシートの一部をまとめて1つのBOOKに貼り付けたい』(ミント) 大変困っています!! すべて同じ構成の複数BOOKの最初のシート(Sheet1)の一部のセル範囲を新しい集計用のシートに貼り付けるVBAのコードを教えてください!!!!!! VBAを使用したいのですが、いろいろ調べてもたくさんコードがあって、どれを使えばいいかわからず、混乱状態になってしまっています。。。 詳細はこのような形です。 各BOOKの最初にSheet1があり、その構成はどのBOOKも同じです。 <たとえば・・。>【Book1】 A B C D 1 あ い う え→ラベル行2 お か き く3 け こ さ し【Book2】 A B C D 1 あ い う え→ラベル行2 す せ そ た3 ち つ て と これを【集計用シート】 A B C D 1 あ い う え2 お か き く3 け こ さ し4 す せ そ た5 ち つ て と このようにつなげていきたいのです。全BOOKが複数シートありますが、集計するのはSheet1だけでよいです。 できれば、1行目にあるラベル以外を順番に貼り付けられればと思います。要するに、上記の例でいくと、2行目から集計用シートに貼り付けられていくイメージです。なお、すべてのBOOKは一つのフォルダにまとめられています。 VBA初心者でこの情報だけで絞り込めるのかわからないのですが、他にも情報が必要であれば教えてください。。。 上記のことができるコードを記載頂けたらと思います!!宜しくお願いします!!! なお、Excelのバージョンは2007、OSはWindows7です

  • VBA でテキストファイルに読み書き

     エクセル2000のVBAを使用しています。 ブックAファイル名をブックBのセルに入力して、ブックAをインデックスの様な扱いのファイルを作成使用としたのですが、ブック間で変数のやり取りは出来ないと思います。できるんですか??  その為、txtファイルを変数代わりに使おうと思っているのですが、 入出力の方法が良くわかりません。  簡単にブックBのセルの値をtxtファイルに書き込んでブックAで、 そのtxtファイルを読み込む様なVBAのコード教えて下さい。 初心者ですけど・・。

  • エクセルVBA(値または文字の重複削除)

    先日まで何も出来ない状態でしたが、時間が出来たので、 またVBAを触り始めました。 質問はVBAで変数に代入されている値または文字の重複を削除したいのです。 セル範囲を取得し、変数に代入するまではいいのですが、 行列にまたがって範囲選択すると複数のセル位置(数値)が入ってしまいます。 例えば、D8からE9とD12からD13まで選択すると、変数の「セル位置」には「$D$8$E$8$D$9$E$9$D$12$D$13」が代入されますが、 $D$8=$E$8 $D$9=$E$9 数値の部分(内部は文字列ですが)が重なってしまいます。 これを、「$D$8$E$$D$9$E$$D$12$D$13」など数値(文字)のどちらかを削除出来ないものかと悩んでいます。 利用するのは数字の部分だけなので、その処理自体は問題ありません。 IF文でループさせて文字が存在するか見ているだけです。 また、比較自体も必ず偶数行だけですので、最後の「$」が無くても問題はありません。 For 始まり行 = セル開始行 To 入力行数 Step 2 If InStr(セル位置, "$" & Trim(始まり行) & "$") Then Exit For End If Next ただ、重複があるとそれも個数に含まれてしまい、計算がおかしくなります。 選択セル範囲の個数取得にはRange.Addressを使っています。 Dim rg As Range 'セル セル位置 = "" For Each rg In Selection セル位置 = セル位置 + rg.Address Next 縦1列なら大丈夫なのですが、複数列になると問題になります。 列行関係なく選択されたセルの行数が分かればいいだけなんですが・・・ 考え方だけでも構いませんので、よろしくお願いします。