advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 14736 for VBA ������������ (0.003 sec.)
[[20190508102845]]
#score: 3407
@digest: 206d7d9a5d51cbefca61ffd3e1e0f324
@id: 79475
@mdate: 2019-05-16T04:49:31Z
@size: 13065
@type: text/plain
#keywords: mami (32067), ィマ (20624), 限増 (12466), 簿") (10672), 本") (8478), 増殖 (7852), 原本 (6510), worksheets (5597), 名分 (5202), 無限 (4523), officetanaka (3623), ーー (3622), 名簿 (3464), 動記 (3187), 記録 (3045), 失敗 (2880), 2019 (2647), (ma (2479), 水) (2176), 命令 (1924), count (1732), マク (1529), cells (1524), クロ (1431), value (1412), シー (1351), 録で (1346), ロパ (1315), ロの (1240), sheets (1225), 氏名 (1210), パテ (1173)
『マクロ初心者にできるでしょうか?』(mami)
Sheet1のA列に氏名、B列に年齢、C列に住所が10名分入った表があります。 これを、 1.各氏名でシートを作成 2.作成されたシート内の 例えばD3にその人の年齢、H5に住所を反映させたい この場合、マクロを作成したらできるのかなと 思って質問させていただきました。 反映させたいシートは、セル結合や大きさの調整をしていて、 空の原本を用意してあります。 現在は、そのシートをコピーし、名称変更、 各場所にデータをコピペしていますが、 どんどん人数が増えて困っております。。 < 使用 Excel:Excel2010、使用 OS:Windows7 > ---- 「マクロの記録」をお試しください。 わからないときは、検索窓にこの文字を入れて検索をかけると 親切なサイトがたくさんありますのでご参照ください。 (sheet無限増殖) 2019/05/08(水) 10:39 ---- マクロの自動記録を何度か試したのですが、失敗してしまうのです。 (mami) 2019/05/08(水) 10:44 ---- それはマクロじゃないとダメなんですか? 数式でも十分対応できそうですけど。 (コナミ) 2019/05/08(水) 10:52 ---- 全然何でも良いのです!できれば! シート追加もできるんですか?? (mami) 2019/05/08(水) 10:53 ---- CELL関数を使えばシート名をセルに反映できるので、シート名を反映した氏名をキーにして 年齢や住所を表示できるようにVLOOKUP関数などを使えばできるかと思います。 検索すれば抜き出し方などはたくさん出てきますよ。 (コナミ) 2019/05/08(水) 11:21 ---- mamiさんはSheet1に入力されている名前でシートを作るのも自動でしたいといっているのではないか? (ねむねむ) 2019/05/08(水) 11:24 ---- ねむねむさん そうなんです!全部自動でできないかなと… (mami) 2019/05/08(水) 11:37 ---- >マクロの自動記録を何度か試したのですが、失敗してしまうのです。 とありますが、 マクロの自動記録自体が失敗してしまうのでしょうか? マクロの自動記録で得たコードを実行すると失敗してしまうのでしょうか? (虎) 2019/05/08(水) 11:41 ---- 虎さん シートを追加 とか単品でするのはできるのですが、 追加・名前変更。。。と複数の作業を入れると 失敗します。そういうものなんですかね? ボタン押して、ぱっと全部できるようにしておきたいなと 思ったのですが・・・ (mami) 2019/05/08(水) 11:48 ---- mamiさん マクロの自動記録で、どこで失敗するのかを教えてください。 これまで何ができて、何ができなかったのかを知ることで、この先何をすれば良いかを知ることができます。 エラーの出るもので構いませんので、現状記録されているマクロをここにコピペしてください。 (sheet無限増殖) 2019/05/08(水) 11:54 ---- mamiさん マクロの自動記録自体は成功しているようなので、sheet無限増殖さんのおっしゃる通り、 まずはそのコードを提示していただけたらと思います。 そのコードをベースとして、修正していくことで、 >ボタン押して、ぱっと全部できるようにしておきたいなと も実現すると思います。 初心者であればこそ、焦らずに少しずつ進めていきましょうよ(^^) (虎) 2019/05/08(水) 12:04 ---- すでに同種のコメントついていますが、私も参加で。 >マクロ初心者にできるでしょうか? やる気と根気さえあれば大抵のことは出来ますよ。 ご質問の内容から察するに (1) 1回の処理で10名分の処理をしたい (2) 処理ごとに誰の分であるのかを指定して、一連の処理を自動化したい という2パターン考えられますが、どちらでしょうか。 ただ、それぞれ (1)ループ処理 (2)ユーザーが何らかの選択をしてマクロに伝える処理 という部分が絡んでくると思いますので、いずれにしろマクロの記録からもう1歩踏み出す必要はでてくるとおもいます。 たとえば↓みたいなデータだったとして __A_____B____C__ 1 鈴木 56 北海道 2 田中 48 宮城 3 佐藤 37 沖縄 4 伊藤 55 鹿児島 5 伊東 50 宮崎 6 井藤 40 神奈川 7 井土 44 香川 8 井門 49 愛媛 9 中野 38 山形 10 中田 29 山口 とりあえずのたたき台として↓のようなコードにすればよいと思います。 (同じ名前のシートが既にあった場合はエラーになりますが。。。) Sub さんぷる壱() Dim i As Long With Worksheets("名簿") For i = 1 To .Cells(.Rows.Count, "A").End(xlUp).Row Sheets("原本").Copy After:=Sheets(Sheets.Count) Worksheets(Worksheets.Count).Name = .Cells(i, "A").Value Worksheets(Worksheets.Count).Range("D3").Value = .Cells(i, "B").Value Worksheets(Worksheets.Count).Range("H5").Value = .Cells(i, "C").Value Next i End With End Sub *-------------------------------------------------------------------------------------* Sub さんぷる弐() Dim i As Variant, buf As String buf = InputBox("対象者の名前を入力") With Worksheets("名簿") i = Application.Match(buf, .Range("A1:A10"), 0) If IsError(i) Then MsgBox "入力された人はリストにいません" Else Worksheets(Worksheets.Count).Name = .Cells(i, "A").Value Worksheets(Worksheets.Count).Range("D3").Value = .Cells(i, "B").Value Worksheets(Worksheets.Count).Range("H5").Value = .Cells(i, "C").Value End If End With End Sub (もこな2) 2019/05/08(水) 12:47 ---- sheet無限増殖さん 虎さん ありがとうございます。 考えていたのですが、 シートを追加してから、そのシート内の氏名を配置するセルを シート名にするのか、 そもそもの表から氏名を選択してシート名にするのか… というか、 記録するときに、1名分はその者を選択すれば良いと思うのですが、 10名分となるとどうやって記録するのか… など、初心者も初心者なのでわからなくなってきてしまいました… (mami) 2019/05/08(水) 12:56 ---- もこな2さん ありがとうございます! 1のパターンでやってみたいのです! ちょっと1回今やってみます! (mami) 2019/05/08(水) 12:58 ---- もこな2さん できましたーーーーーーー! 感動です。 (mami) 2019/05/08(水) 13:11 ---- しかし、これでは、 私は何も習得できていない可能性が… コードの意味とか、 調べたら理解できますかね?? みなさま本当にありがとうございます。 (mami) 2019/05/08(水) 13:16 ---- 解決されたようで何よりです(^^) たとえば、『vba シートのコピー』というように、『vba やりたいこと』とかで調べると、 いろいろと参考になるページが見つかると思います。 もこな2さんのさんぷる壱のコードだと、↓が参考になるかと思います。 http://officetanaka.net/excel/vba/tips/tips130.htm http://officetanaka.net/excel/vba/statement/ForNext.htm http://officetanaka.net/excel/vba/sheet/sheet05.htm (虎) 2019/05/08(水) 13:30 ---- 虎さん ありがとうございます! 特に1つめのリンクが難しくて 今のところさっぱりでしたが、 読み込んで少しずつ理解できたらと思います。 マクロが使えると本当に便利なんですね。 みなさんがうらやましいです! がんばって勉強します! (mami) 2019/05/08(水) 14:48 ---- 遅レスですが >しかし、これでは、 >私は何も習得できていない可能性が… その考え大事だと思います。はじめに書いたように、やる気と根気さえあれば大抵のことはできる。(とおもいます) 【さんぷる壱】で使っている主な命令を並べるとこんな感じでしょうか(虎さんとかぶっているものもありますが・・) ■Withステートメント マクロの記録でもさりげなく出てくることがありますが、今回のケースでは出てこないかもです。 http://officetanaka.net/excel/vba/beginner/16.htm ■(シートオブジェクトの)COPYメソッド マクロの記録で出てきます。 http://officetanaka.net/excel/vba/sheet/sheet05.htm ■For 〜 Nextステートメント ループ処理と言った部分です。マクロの記録では出てきません http://www.eurus.dti.ne.jp/‾yoneyama/Excel/vba/vba_for_next.html ■Endプロパティ、Rowプロパティ マクロの記録ではでてこなかったような・・(あやふや) http://www.niji.or.jp/home/toru/notes/8.html http://officetanaka.net/excel/vba/tips/tips130.htm ■Countプロパティ マクロの記録では出てきません(たぶん) https://www.vba-ie.net/property/count.php 【どこに】コピーしたシートを挿入するか コピー挿入したシートは【どれ】なのか特定するために使っています。 シートに行が何行あるのかの特定にも使ってますね。 ■Nameプロパティ マクロの記録で出てきます。 そのまま、シートの名前を設定する(変える)のに使っています。 ■Valueプロパティ マクロの記録で出てくる・・・とおもったら出ないですね(ちょっと試しただけですが) セルに値をいれたり、セルの値を取得(調べたり)するときに使います。 さんぷるでは、シート名を【何】という名前にすればいいのか、 指定したセルの【何】に【何】を入れればいいのかという指示に使っています。 また、マクロ初心者とのことなので(私も似たようなものですが) ↓も参考になるかもしれません。 ■変数について http://officetanaka.net/excel/vba/variable/ ■デバッグ作業について(ステップ実行) https://www.239-programing.com/excel-vba/basic/basic023.html ■デバッグ作業について(ブレークポイント) https://www.239-programing.com/excel-vba/basic/basic022.html どこから手をつけていいかわからないという場合は、みなさんが指摘されているとおり「マクロの記録」でエクセル君にたたき台を作ってもらい、ステップ実行で1行ずつ実行してみて、要らない部分(無駄なセルのselect、画面のスクロールなど)と必要な部分(シートコピーする命令、シートの名前を変える命令)を見分ける練習をしてみてはどうでしょうか (もこな2) 2019/05/09(木) 12:47 ---- ありがとうございます! 全然初心者じゃないです、 そしたら私はゴミ以下です… 少しずつでも習得していこうと思っています! (mami) 2019/05/09(木) 13:00 ---- もこな2さん さんぷる弐 -------------------------------------------------------------- Sub さんぷる弐() Dim i As Variant, buf As String buf = InputBox("対象者の名前を入力") With Worksheets("名簿") i = Application.Match(buf, .Range("A1:A10"), 0) If IsError(i) Then MsgBox "入力された人はリストにいません" Else Worksheets(Worksheets.Count).Name = .Cells(i, "A").Value Worksheets(Worksheets.Count).Range("D3").Value = .Cells(i, "B").Value Worksheets(Worksheets.Count).Range("H5").Value = .Cells(i, "C").Value End If End With End Sub ------------------------------------------------------ を試してみたら 作成されないのですが、 原本シートを選択するくだりがないからですかね? もしくは、個別でなく、全部一括でもなく、 一覧の中から、選択した人たちだけ作成 という形にするとしたら、 どうしたら良いのでしょうか? (mami) 2019/05/16(木) 11:15 ---- >作成されないのですが、 おもいっきりサンプルがミスってますね。失礼しました。 >原本シートを選択するくだりがないからですかね? 正しくは、選択するのではなく、原簿シートを(末尾に)コピー挿入をする命令がないです。 Sub さんぷる弐_修正() Dim i As Variant, buf As String buf = InputBox("対象者の名前を入力") With Worksheets("名簿") i = Application.Match(buf, .Range("A1:A10"), 0) If IsError(i) Then MsgBox "入力された人はリストにいません" Else '▼「原簿}シートを末尾にコピー挿入 Sheets("原本").Copy After:=Sheets(Sheets.Count) Worksheets(Worksheets.Count).Name = .Cells(i, "A").Value Worksheets(Worksheets.Count).Range("D3").Value = .Cells(i, "B").Value Worksheets(Worksheets.Count).Range("H5").Value = .Cells(i, "C").Value End If End With End Sub >もしくは、個別でなく、全部一括でもなく、 >一覧の中から、選択した人たちだけ作成 >という形にするとしたら、 >どうしたら良いのでしょうか? どのように【選択】するのかが肝になりそうです。 たとえば、名簿シートのA列に名前を書いておき、対象の場合B列になんらかの印をつける(つけない)ということなら、さんぷる壱に少し手を加えるとよいとおもいます。 *----------------------------------------------------------------------------* Sub さんぷる参() Dim i As Long With Worksheets("名簿") For i = 1 To .Cells(.Rows.Count, "A").End(xlUp).Row 'B列がブランクでない場合 If .Cells(i, "B").Value <> "" Then Sheets("原本").Copy After:=Sheets(Sheets.Count) Worksheets(Worksheets.Count).Name = .Cells(i, "A").Value Worksheets(Worksheets.Count).Range("D3").Value = .Cells(i, "B").Value Worksheets(Worksheets.Count).Range("H5").Value = .Cells(i, "C").Value End If Next i End With End Sub *----------------------------------------------------------------------------* Sub さんぷる肆() Dim i As Long With Worksheets("名簿") For i = 1 To .Cells(.Rows.Count, "A").End(xlUp).Row 'B列が「済」でない場合 If .Cells(i, "B").Value <> "済" Then Sheets("原本").Copy After:=Sheets(Sheets.Count) Worksheets(Worksheets.Count).Name = .Cells(i, "A").Value Worksheets(Worksheets.Count).Range("D3").Value = .Cells(i, "B").Value Worksheets(Worksheets.Count).Range("H5").Value = .Cells(i, "C").Value .Cells(i, "B").Value = "済" '←処理したら「済」にする End If Next i End With End Sub (もこな2) 2019/05/16(木) 12:42 ---- もこな2さん ありがとうございます! 済方式でやってみました! 処理したら済になるやつも かなり便利ですーーーー 本当にありがとうございます!! (mami) 2019/05/16(木) 13:49 ...
https://www.excel.studio-kazu.jp/wiki/kazuwiki/201905/20190508102845.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97056 documents and 608292 words.

訪問者:カウンタValid HTML 4.01 Transitional