エクセルで、横(列)256列以上のデータを入力したいため、シートを分けざるをえません。その場合、次のようなことがしたいとき、どのようにすればよろしいでしょうか?(やりたいことの結論下記(3)になります。)
エクセルのシートが2つ以上あるとします。
(1)「sheet1」には、基本データ(名簿録のようなもの・氏名ふりがなアイウエオ順配列)
(2)ふたつめ以降のシートには、毎月変更するデータを入力し、「sheet1」の名簿の個々のIDに対応したそれぞれ同じ行番号に入力することになります。
(3)「sheet1」で行削除(名簿対象者解約)や行挿入(新規契約者)を任意の場所で行いたい。それに連動して、2つ目以降のシートでも同じ列で行削除・行挿入を自動でしたい。
★この簡易システムを作成するのはマクロ初心者の私であり、日々の入力作業するのはエクセルそのものが初心者である他者となります。
★行挿入、行削除のときだけシートの同時選択を手作業でしてもらうことは想定していません。そのあたりをも含めた自動化の智恵がでてこないのです。
以上、よろしくお願いします。
No.4ベストアンサー
- 回答日時:
1. ALT+F11でVBA(マクロ)の画面がでます。
2. そして左にThisWorkbookというオブジェクトがあったらダブルクリックします。
3. 右に白い窓が出たらさっきのコードを全部貼り付けてください。
4. その後、ワークシートに戻っててきとうながセルで右クリックしてみてください。
↓ ちょっと書き換えてみました。
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim RT As Long
Dim mySh As Worksheet
Dim myRow As Long
Cancel = True
myRow = Target.Row
If Sh.Name <> "Sheet1" Then Exit Sub
RT = Val(InputBox("1=挿入" & Chr(10) & Chr(13) & _
"2=削除" & Chr(10) & Chr(13) & _
"3=キャンセル"))
If RT <> 3 And RT <> 0 Then
For Each mySh In Worksheets
mySh.Select
Rows(myRow).Select
Select Case RT
Case 1
Selection.Insert Shift:=xlDown
Case 2
Selection.Delete Shift:=xlUp
Case 3
End Select
Next mySh
End If
Sh.Select
End Sub
この回答への補足
さっそく、ありがとうございます。勤務時間の都合で来週になりますが、試したあとにあらためてお礼申し上げます。(自宅でネットがつながっていないので申し訳ありません)
補足日時:2005/11/11 20:02確認できました。ありがとうございました。
私自身、VBAの可能性を今までの標準モジュールへの記録だけという段階を超えて広がりそうで感謝します。
No.3
- 回答日時:
マクロで行った作業は、「元に戻す」や「Ctrl+Z」で実行前に戻せません、ということです。
<undoがきかないなので、挿入はいいですが、削除の場合注意が必要となります。
それと、多少ヨコ気味ですが、#2さんの補足にある事項ですが、
多少はご自分で調べられましたでしょうか。
インターネットを使われているのですから、下記のようなHPはたくさんありますよ。
参考URL:http://www.sk2.aitai.ne.jp/~happy/
ありがとうございます。小さな質問にまでお答えいただき、感謝します。ネットでVBAを教えてくれるHPがあることさえ知らなかったです。お恥ずかしい限りです。自宅でネットをつなげてなく、職場でもゆっくり見ることができないのであらゆる意味でわからないことだらけでした。ただ、最近教えてGOOと出会って、VBAがかなり奥が深いものだと知りました。先に教えてくださったマクロについてもあらためて感謝申し上げます。私にとって大きな進歩です。
No.2
- 回答日時:
下のような作業をどこかのイベントに追加すればOKと思います。
Inputboxを使いましたけど、右クリックのポップアップとかに入れてもいいかと思います。サンプルはWorkbookのSheetBeforeRightClickイベントに入れてみました。
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim RT As Long
Dim mySh As Worksheet
Dim myRow As Long
Cancel = True
myRow = Target.Row
If Sh.Name <> "Sheet1" Then Exit Sub
RT = InputBox("1=挿入" & Chr(10) & Chr(13) & _
"2=削除" & Chr(10) & Chr(13) & _
"3=キャンセル")
If RT <> 3 Then
For Each mySh In Worksheets
mySh.Select
Rows(myRow).Select
Select Case RT
Case 1
Selection.Insert Shift:=xlDown
Case 2
Selection.Delete Shift:=xlUp
Case 3
End Select
Next mySh
End If
End Sub
この回答への補足
ご回答ありがとうございます。マクロ初心者のため、あつかましくもうかがって申し訳ありませんが、よろしければ教えてください。
私は標準モジュールに記録、修正するVBAしかわかりません。
・イベントに追加
・Inputbox
・右クリックのポップアップ
・WorkbookのSheetBeforeRightClick
等の概念を理解できないのです。
申し訳ありません。もう少し教えていただけないしょうか?
No.1
- 回答日時:
列で行挿入・行削除?というのが分かりませんが。
作業対象は「行」とします。
もし「列」なら「Rows」を「Columns」として下さい。
----------------------------------------
Sub Mrowinsert()
'複数シートの同位置で行挿入
Dim r As Integer
r = ActiveCell.Row
Worksheets(Array("Sheet1", "Sheet2", "Sheet3")).Select '同時に作業するシート名を列記
Rows(r).Select
Selection.Insert Shift:=xlTodown
Sheets("Sheet1").Select
End Sub
Sub Mrowdelete()
'複数シートの同位置で行削除
Dim r As Integer
r = ActiveCell.Row
Worksheets(Array("Sheet1", "Sheet2", "Sheet3")).Select '同時に作業するシート名を列記
Rows(r).Select
Selection.Delete Shift:=xlTodown
Sheets("Sheet1").Select
End Sub
------------------------------------------
これを「sheet1」でボタン配置するか、どうかして、
操作するときにそれを使ってもらうようにする、というのでは
どうでしょう。
ただ、マクロではundoが使えないので、利用には注意が必要になりそうですが。
VBAの基礎を少しは勉強されてから、取り掛かったほうが
いいかもしれません。
この回答への補足
ご回答ありがとうございます。すみません。
(3)の「同じ列で・・・」は「同じ行で・・・」の間違いです。ご回答内容を今から確認してみます。ありがとうございます。
ありがとうございました。できました。
ところで、"undo"とは何でしょう?何はともあれ、まずは御礼まで。ありがとうございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
あるあるbotに投稿したけど採用されなかったあるある募集
あるあるbotに投稿したけど採用されなかったあるあるをこちらに投稿してください
-
エクセル 行の挿入すると別シートに行が挿入され、関数も自動更新される方法
Excel(エクセル)
-
エクセルの参照行の挿入による追加と行の削除に対応できる関数を教えてくだ
Excel(エクセル)
-
[エクセル]行の挿入、シート間で連携できますか?
Excel(エクセル)
-
-
4
シートを同期させるには?(行の削除を同期させるのは可能?)
Excel(エクセル)
-
5
Excelで行が挿入したときに、自動的に別シートにも挿入したい
Excel(エクセル)
-
6
行、列の挿入がリンク先に反映できないでしょうか
Excel(エクセル)
-
7
エクセルの参照元ブックで行の挿入を
Excel(エクセル)
-
8
Excelに自動で行の増減をしたいです。
Excel(エクセル)
-
9
EXCELで特定のセルに表示された項目をヘッダーやフッターに出力するには
Excel(エクセル)
-
10
IF関数などを使って条件に合った「行」を削除するような機能はありますでしょうか?
Excel(エクセル)
-
11
【エクセル】行挿入で数式もいっしょにコピーしたい
Excel(エクセル)
-
12
TODAY()で設定したセルの日付が変わったらマクロを実施させたい
Visual Basic(VBA)
-
13
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
14
エクセル、 名前の定義に関数を使用すると参照できない
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelで、セル内に文字が入力さ...
-
VBAでエクセルシートを更新...
-
エクセルで別シート、または別...
-
エクセルの担当者別にシートを...
-
「24日の0時」って・・・
-
エクセルのチェックボックスを...
-
履歴書の日付間違いで落ちますか。
-
回覧板の日付について質問です...
-
エクセルの列が左右逆に・・・・
-
Accessでの時間別集計について
-
2つの日付の中間の日付 エク...
-
エクセルで最高値、最低値の日...
-
エクセルでのNULLという文字列...
-
パソコンで購入したデーターが...
-
日付の大小の表現
-
ACCESSで年度入力したい...
-
子機から親機に日付と時刻が転...
-
ACCESSで1月1日~12月31日まで...
-
Wordで、ヘッダーに印刷日付を...
-
Excelについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでエクセルシートを更新...
-
excelで、セル内に文字が入力さ...
-
エクセルのシートを同時に行削...
-
【エクセル】シートのロックで...
-
表示倍率を変更させない方法
-
エクセルの担当者別にシートを...
-
エクセルVBAで65536レコードを...
-
Excelのマクロで、開いた時に、...
-
エクセル◎○の人は、一つ昇格し...
-
エクセルVBAでデータ検索について
-
同一セルに入力規則のリストと...
-
エクセルシート内データの保護
-
エクセルで別シート、または別...
-
Excelで、表に小計と合計を入れ...
-
エクセルVBAの文字列の部分一致...
-
エクセルで、2つのシートにある...
-
ホームページビルダーv10でエク...
-
エクセルのCSVについて
-
ワードの差し込み印刷について
-
シートを串刺しで抽出したいの...
おすすめ情報