質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

783閲覧

VBA 別シート指定の行上書き

yuhei712

総合スコア1

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/04/30 05:38

編集2020/04/30 05:42

Sheet2(記入)で編集しSheet1(一覧)に上書きをさせたいのです。
なかなかうまく行かずご指導お願い致します。

Sheet1(一覧)
![イメージ説明

Sheet2(記入)記入位置は、固定されています。
イメージ説明
結果
Sheet1(一覧)
イメージ説明

よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2020/04/30 06:54 編集

1.「Sheet2(記入)記入位置は、固定されています。」の「記入位置は、固定されています。」とはどういう意味ですか? 2.「なかなかうまく行かず」出来てるところまでのコードを掲載してください。
yuhei712

2020/04/30 07:19

すいません。 私自身が勉強不足の為形になっていません。すべてをお任せするような形で申し訳御座いません。 本Excelでは、Sheet2(記入)にSheet1(一覧)から検索させるVBAコードを組み上げてあります。 そこで編集が応じた場合Sheet2(記入)で編集し上書きさせたいのです。 よって、Sheet2(記入)では、列、行が固定されているという事です。 ※例えば 鈴木さんの住所・苗字変更があってSheet1(一覧)から検索をします。Sheet2(記入)で編集し個人IDを変えたくないので元の行に戻す。 そんなイメージです。 (操作には、お年寄りが居まして昔のシートを変えれません。ですのでユーザーフォームが使えないのです・・・・)お手数おかけします。 説明が下手でしょうか??(お答え出来てますでしょうか??) よろしくお願い致します。
meg_

2020/04/30 07:45

うーん。質問の画像を見ると「カ・キ・ク・ケ・コ」が順不同で並んでいるよう見えますが、実際は違うということでしょうか?
yuhei712

2020/04/30 08:07

質問画像(例) カ(C3)キ(E3)ク(D4)ケ(D5)コ(F7)固定です。 本Excel書式Sheet2(記入)も不通りです。 実際は、違います。教えて頂いたものを参考にし作成したいと思っております。
guest

回答1

0

ベストアンサー

ExcelVBA

1Sub test() 2 Dim rngFillIn As Range 3 Dim rngList As Range 4 Dim ixRow As Long 5 Dim ixCol As Long 6 7 '初期値の設定(前提条件定義) 8 Set rngFillIn = Worksheets("Sheet2").Range("D1,C3,E3,D4,D5,F7") 9 Set rngList = Worksheets("Sheet1").Range("B2").CurrentRegion 10 ixRow = rngList.Rows.Count 11 ixCol = 2 12 13 '一覧表の位置検索 14 On Error GoTo ErrHandler 15 ixRow = WorksheetFunction.Match(rngFillIn.Areas(1).Cells, rngList.Columns(1).Cells, 0) 16 On Error GoTo 0 17 18 '各セルの値を転記 19 For ixCol = ixCol To rngFillIn.Areas.Count 20 rngList(ixRow, ixCol).Value = rngFillIn.Areas(i).Value 21 Next 22 23 Exit Sub 24 25'IDが見つからなかった場合の例外処理(新規データの登録位置再定義) 26ErrHandler: 27 ixRow = ixRow + 1 28 ixCol = 1 29 Resume Next 30End Sub

こんな感じかな。
わからないところがあれば聞いて下さい。

「丸投げ」と言われても仕方ないけど、どう聞いていいかも難しいところですよね^^;

飛び飛びのセル範囲はAreasプロパティで各セルを取得できます。
↓動作を確認してみるコード

Msgbox Range("D1,C3,E3,D4,D5,F7").Areas(4).Address(0,0)

投稿2020/04/30 09:09

mattuwan

総合スコア2163

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuhei712

2020/04/30 10:02

お時間をさいて頂き本当にありがとうございます。 試してみましたが勉強不足が響いてわからないエラーが発生しました。 コンパイル エラー(変数が定義されていません。) とメッセージがでます。これは、何が問題でしょうか??
mattuwan

2020/04/30 10:38

>コンパイル エラー(変数が定義されていません。) どこかにタイプミスがあります。 できれば、エラーが出た行も一緒にご提示ください。 >rngList(ixRow, ixCol).Value = rngFillIn.Areas(i).Value iという変数は宣言してないですね^^; rngList(ixRow, ixCol).Value = rngFillIn.Areas(ixCol).Value が意図していた文です。
yuhei712

2020/04/30 22:35

本当に本当にありがとうございます。 VBAでの知識をもっとつけて行きたいと思っています。 今後ともよろしくお願い致します。
yuhei712

2020/04/30 23:04

すいません・・・ ちなみに一覧がC~G通しではなくC,D,E,F,Kと列が飛んでいる場合どうすればいいですか? 度々すいません
mattuwan

2020/04/30 23:17

rngList.Row(ixRow).range("A1,B1,C1,D1,E1,J1").Areas(ixCol).Value = rngFillIn.Areas(ixCol).Value としてはどうでしょうか? 後で分かり難いかもしれませんが、 見つけたセルをA1セルとみなして数えて指定できます。 ん~セルの数が合ってない気がしますが、ちょっとやってみてください。
yuhei712

2020/05/01 00:27

ありがとうございました。 本Excelに差し替え完了いたしました。 無事動いております。 度々本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問