- ベストアンサー
コピー・貼り付けを、“より簡単に行いたい”ワガママは可能ですか?
エクセルでのご教授をお願いします。 コピー・貼り付けする文字列が、ほぼ決まっています。(但し、今後追加の予定はあります) セル1つ1つに、コピーしたい文字列が入力済となっています。 現在「Sheet1」「A列」に、コピーしたい文字列が並んでいます。 「A1」には「Ctrl」,「A2」には「+」,「A3」には「Alt」,「A4」には「Q」という具合です。 これを、A1・A2・A3・A2・A4の順にクリックするだけで、 「Ctrl+Alt+Q」というように別のセルに書き込ませることができると聞きました。 私の聞き違いでなければ、マクロという機能だそうですが、その操作(作り方)は、とても難しいものなのでしょうか? ボランティアで、視覚障害者がお使いになるパソコンの機能を、文書化する作業を行っています。 要は、視覚障害者用パソコンの操作手順書の作成です。 因みに、「Ctrl+Alt+Q」では、音声案内のスピード調整ができます。 最終的には、 「Ctrl」+「Alt」+「Q」→「音声案内のスピード調整」 もしくは 「音声案内のスピード調整」→「Ctrl」+「Alt」+「Q」 のように 表示させたいと思っています。 コピー・貼り付けの回数があまりに多く、もっと簡単にできればと思い、お知恵をお借りしたいと思います。 文章に不備等あるかもしれませんが、よろしくお願いいたします。
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
質問にあるように、 A 1 Ctrl 2 + 3 Alt 4 Q 5 : 6 : となっているとします。多分、Ctrl,Shift,Alt,A,B,C・・・・・Z,F1,F2・・・のように並んでいるのでしょうか。 もしそうなら、置換えは面倒かもしれませんね。質問にあるような操作ができるようにしてみました。 (1)マクロの登録 ツール→マクロ→Visual Basic Editor でVBE画面に移り、挿入→標準モジュール で標準モジュールを挿入します。出てきたコードウインドウに下記マクロをコピーして貼り付けます。 ここから ↓ Sub CellSelect() Dim rg As Variant '選択セル Dim work As String '作業用文字列 Dim wrtRg As String '結果を書き出すセル Dim cot As Integer 'カウンタ For Each rg In Selection cot = cot + 1 If cot = 1 Then wrtRg = rg.Address Else If rg.Text <> "+" Then work = work & "「" & rg.Text & "」" Else work = work & rg.Text End If End If Next Range(wrtRg) = work & "→「」" Range(wrtRg).Offset(0, 1) = "「」→" & work End Sub ↑ ここまで (2)マクロのショーカットキーへの登録(Ctrl+Shift+Zに登録する例です) シートに戻り、ツール→マクロ→マクロ でこのマクロを選択し、オプシュンからショートカットキー『Z』を割り当てます。ショーカットキーは半角英字大文字(ZやAなど)を指定します。今回は『Z』にします。 マクロのダイアログを閉じます。 (3)マクロを使ってみます 3-1.結果を書きたいセル(空いているセルです)を選択し、 3-2.Ctrlキーを押しながら、A1、A2、A3、A2、A4と順にクリック、 3-3.Ctrl+Shift+Z でマクロを実行します。 これで、 一番最初に選択していたセルに 「Ctrl」+「Alt」+「Q」→「」、 その隣に 「」→「Ctrl」+「Alt」+「Q」 が出力されます。『音声案内のスピード調整』の部分は後で入力すればいいと思います。 1つに"音声案内のスピード調整" を入力して、コピーしてもいいでしょう。 セルの組み合わせは何個でもかまいません。 「Ctrl」+「C」→「」 「Ctrl」+「Shift」+「Enter」→「」 「Shift」+「F2」→「」 これも上のマクロで編集してみました。 選択の方法がよく分かりませんが、『+』キーの選択は不要かもしれません。 がんばって下さい。
その他の回答 (7)
- imogasi
- ベストアンサー率27% (4737/17069)
#7imogasiです。 ●>NO.6について、使い方がよく分かりません。 解答第6番に追加して入れた使い方の説明なら、こう言うことです。 あるセルに「音声案内のスピード調整」→「Ctrl」+「Alt」+「Q」のように表示させたいとします。 B1セルに 「「音声案内のスピード調整」→」までを入力し 隣接のC1セルに「「Ctrl」+「Alt」+Q」を入れるのであれば、C1セルの入力時に解答#5が使えます。しかし B1セルに「「音声案内のスピード調整」→」までを入力し 引き続いてB1セルの後半に「「Ctrl」+「Alt」+Q」を入れたいときが多いと思いましたので、解答#6を入れたわけです 。#6と#5はどちらか一方を使えば良いものです。 ●そもそもの私の提案理由 >「それを、A1・A2・A3・A2・A4の順にクリックするだけで、「Ctrl+Alt+Q」というように別のセルに書き込ませることができると・・・」とありますが、 A1・A2・A3・A2・A4のうちの4つないし3つを 4(3)回クリックしなくても、「1回のクリックでできま すよ」と言うことです。その代わり初めにリストボックスに 、A1・A2・A3・A2・A4の組み合わせのうち使いそ うなものを1つ1つセットしておかないといけません。 その組み合わせはよく考えてメモしてください。その後 私の例ではセルG1~G○○に打ち込みます。勿論1回だけ です。そしてリストボックスのプロパティの表の「 ListFillRange」にG1:G○○を入れないといけません。 これでリストボックスに「Ctrl+Alt+Q」などの ような組み合わせ文字列が表示されるようになります。 このリストの表示項目は何時でも上記操作で増やしたり減ら したり出来るのは判りますよね。 ●もしCtrlとAltとQなどを別セル(例えばC1,D1、E1セル)にセットしないといけないのなら、プログラムを少し変えてそのようにも出来ますが。
お礼
再度に渡ってご回答いただき、本当にありがとうございました。 こんなに素晴らしい技術があるなんて、そして、それを使いこなせるなんて、羨ましい限りです。 まだまだパソコンを使いこなせていないのだなぁ、と実感しました。 また何かの機会に質問を目に留めていただけたら、どうかヨロシク。 ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
#5、#6imogasiです。ご苦労様です。 ●>「表示→ツールバー→コントロールツールボックスの中に「リストボックス」というのがありました。 こちらのことでしょうか?-------->ハイそうです。 ●>(1)が正しいと勝手に解釈し(=OK)、この作業をしてみますと、確かに何やら四角ができました。---->大きさが1cm四角とかで、小さすぎるのでは。+をシート上に持ってきて、左から右に3cm以上、その後上から下へ5cmぐらい左クリックボタンを押さえたままで動かしてください。 リストボックスは項目文字を表示するのですから、小さいと 使い物になりません。 現状の小さいものを大きくする方法もありますが、やり直し 法をしましょう。 ●一旦出来あがった編集中のリストボックスはDeleteキーを押すと消えますので、消したうえで、 「>アイコンのポインターが+になるのでワークシート上の、適当な場所に持ってきて、¬形に擦る」を上記注意を念頭にやって見てください。上手く行ったか知らせてください。
お礼
No.7のご回答について、できましたー。完璧です。 すばらしいですね。 こんなモノが作れちゃうなんて、ホント、羨ましいです。 と言っておきながら恐縮なのですが、NO.6について、使い方がよく分かりません。 元の式?のところに、上書きしてしまったのですが、良くなかったですか? 私、まだ何か勘違いしているのかしら・・・。 本当に頭が悪くって、申し訳ないです(←泣きたい気分)。 よーく読み返して、もう一度挑戦してみます。 とりあえず、No.7が出来たので、嬉しくなってご報告でした。 ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
#5で解答を入れた者です。その中で(9)に記した件は、 下記のように(5)のコーディングを直すとそれに近いことが出来ます。 Private Sub ListBox1_Click() ActiveCell = ActiveCell.Value & " " & ListBox1.List(ListBox1.ListIndex) End Sub 例えば「次のように入力してください。」とまでいれて、一旦 エンターキーを押します。アクチブセルが右か下へ行きますがそれを前に戻し、リストボックスの項目(例えばCtrl+Q)をクリックすると、セルの値は「次のように入力してください。 Ctrl+Q」のようになります。 敢えて1スペースを入れています。
- imogasi
- ベストアンサー率27% (4737/17069)
他の方の解答にないので載せます。リストボックスを使う 方法です。マクロを使いますが、ほんの1割だけで、ほとんどクリック操作で出来ます。 (1)VisualBasicのツールバーを出す。 表示-ツールバー-VisualBasicをクリック する。 「リストボックス」のコントロールのアイコンを探し (しばらくアイコンの上にカーソルを置いておくと リストボックスとコメントが出てくる)クリックする 。アイコンのポインターが+になるのでワークシート 上の、適当な場所に持ってきて、¬形に擦るとリスト ボックスが出来る。 4隅と辺の中間に4つ、計8つの小四角が現われる。 (2)リストボックスの中で、マウスを右クリックし、出てき たリストの中から「プロパティ」をクリックする。 (3)「プロパティ」リストの中の「ListFillRange」を探し 、右列にG1:G5等と入力する。10項目あれば G1:G10といれる。G列でなくても、H列でも 何処でも良い。右上の×をクリックして「プロパティ」 リストを消す。 そしてVisualBasicのツールバーの三角定規アイコンを クリックし、凹みをなくす。 (4)ALTキーを押しながらF11キーを押す。VBEの画 面になる。VBEProject(Book1)の Sheet1をクリックする。 (5)Private Sub ListBox1_Click() ActiveCell = ListBox1.List(ListBox1.ListIndex) 'Acよりex)まで1行にすること End Sub をコピーしVBE画面右側に貼りつける。 (6)エクセルのタスクバーのアイコンをクリックして、Sh eet1に帰る、 (7)まずセットしたいセルをクリックする。そしてリストボ ックスの項目の中よりセットしたい行を探しクリックす る。 (8)一ステップまえにクリックしていたセルに、クリックし たリストボックスの項目がセットされる。 リストボックスの中をクリックしなければ、どのセルに も自由にデータを入力出来る。 (9)残念ながら、あるセルに、例えば「次のように入力して ください。」とまでいれて、リストボックスの項目をク リックしても、「次のように入力してください。Ctr l+Q」のようには出来ない。 (以上テスト済み)
補足
すみません、申し訳ないのですが、私の力不足で、ご回答にある下記の部分が理解できませんでした。 >「リストボックス」のコントロールのアイコンを探し、(しばらくアイコンの上にカーソルを置いておくとリストボックスとコメントが出てくる)クリックする。 まず、この「リストボックス」というのが、「表示-ツールバー-VisualBasicをクリック」から見つけることができませんでした。 表示→ツールバー→コントロールツールボックスの中に「リストボックス」というのがありました。 こちらのことでしょうか?・・・(1) >アイコンのポインターが+になるのでワークシート上の、適当な場所に持ってきて、¬形に擦るとリストボックスが出来る。 (1)が正しいと勝手に解釈し、この作業をしてみますと、確かに何やら四角ができました。 しかし、ご説明にある「4隅と辺の中間に4つ、計8つの小四角が現われる。」という状態にはなりませんでした。 度々申し訳ないのですが、私の解釈のどの部分が間違っているのか、再度ご回答をいただけないでしょうか。 すばらしい機能は、是非試してみたいと思っています。 よろしくお願いいたします。
- taka2456
- ベストアンサー率29% (36/122)
私もNO1の方が言われるように別の文字を入力してあとで置換するほうが いいと思いますが とりあえずマクロの作り方教えます 最初に「CTRL」と表示するボタンを作ります (1)「表示」→「ツールバー」で「コントロールツールボックス」にチェックを入れます(入っていればそのままでOKです) (2)コントロールツールボックスのなかから「コマンドボタン(グレーの四角いボタン)」をクリックします (3)シート上でドラッグしてコマンドボタンを出します 「CommandBotton1」と表示されてるはずです (4)「CommandBotton1」の上で右クリックをして「プロパティー」をクリックします (5)オブジェクト名のところを「cmdCTRL」(何でもいいんですがわかりやすい名前にします)と変更します (6)Captionのところを「CTRL」とします(Captionに記述したものがボタンの表面に表示されます) (7)プロパティーのウインドウを閉じて、ボタン(CTRLと表示されているボタン)をダブルクリックします (8)VBAエディターが表示されますので以下の用に記述してください Private Sub cmdCTRL_Click() ←ここはすでに入力されています ActiveCell.Value = ActiveCell.Value & "CTRL" End Sub ←ここはすでに入力されています (9)エクセルのシートに戻ります、タスクバーにあるエクセルをクリックします (10)コントロールツールボックスにある三角定規のマークをクリックして編集を終了します(押されてる状態ではボタンの編集ができます) (11)ボタンを押して確認します まず、CTRLと入力したいセルをクリックしてボタンをクリックします セルに「CTRL」と入力されれば正解です (12)以下同様にしてボタンを作成して マクロを記述して出来上がりです ActiveCell.Value = ActiveCell.Value & "ここに表示したい内容を入れます"
お礼
ご解説がとても分かりやすく、私にも一通り最後まで作業することができました。 何だか英語の画面のようなものだったので、初めに見たときは,ちょっと戸惑いましたが、 なかなか素晴らしい機能のようで、とっても気に入りました♪ ご回答をありがとうございました。
- 2002pon
- ベストアンサー率48% (42/87)
こんにちは 確かにマクロでも可能でしょうが、要求に対するスキルを習得するのは今回だけの作業に限って言えば時間がもったいない様な気がします。 せっかくエクセルを使うのですから、もう少しワークシート関数を駆使するほうが賢明かと思います。(勝手にあなたのスキルを創造していますが、間違っていたらスミマセヌ) たとえば、vlookup関数を使うのはどうでしょう? A列には、1,2,3,4・・・とインデックスを引いておいて、B列には、Cntl,+,Alt,Qとか入れておいて、たとえば、H1を =VLOOKUP(C1,$A$1:$B$4,2) しておけば、C1に1を入力すれば、H1は Cntl になります。 これを、I1とD1、J1とE1・・・と同じ関係にすれば、 D1は + 、J1は、Alt てな感じに・・・・ コピペを繰り返すよりは楽ではないでしょうか? Cntl+Alt+Q が別々のセルに表示されますが、これが問題であれば、 =CONCATENATE(H1,I1,J1,K1,L1) を使えば、ひとつのセルに表示されます。 また、 =CONCATENATE("「",H1,"」",I1,"「",J1,"」",K1,"「",L1,"」") とすれば、 「Cntl」+「Alt」+「Q」 となります。
お礼
VLOOKUPという機能、一応は、テキストを見ながら勉強したことがあります。 確かにおっしゃる通り、うまく行きますよね。 私も「マクロという機能があるから。」と言われ、それを鵜呑みにしすぎたようです。 (どんな機能なのか知りたくもあったのですが。) これから、関数で仕上げるか、マクロという機能を使ってみるか、検討してみます。 うまく行かないと困りますので、少し試してみてから締め切りたいと思います。 早々のご回答をありがとうございました。
- coco1
- ベストアンサー率25% (323/1260)
その「文書化」の作業ですが、必ずしもエクセルで行わなければならないのでしょうか? コピーする文章がある程度決まっているということですから、エディタやワープロの置換機能を使った方がラクではないでしょうか? Ctrl+Alt+Qは「CAQ」などと入力しておき、後から「CAQ」を「Ctrl+Alt+Q」にまとめて置換すればどうでしょうか?
お礼
>その「文書化」の作業ですが、必ずしもエクセルで行わなければならないのでしょうか? 「エクセルでお願いします。」と賜っております。 私の方では勝手に変更できませんので、エクセルでのご教授をお願いしました。 その旨を記載いたしませんで、お手数をおかけ致しました。 またお力添えいただけるようでしたら、お願いいたします。 ありがとうございました。
お礼
まず、素晴らしい技術に、感動しました。(涙) ご回答も 分かりやすく,ご丁寧で、とても嬉しかったです。 一応、これでも英検1級を取得済みなのですが、ご回答にある英語みたいな… はたまた 英語でないような…ご記載には、少々戸惑いましたが、 無事、ご回答通りの作業を終えることができました。 いただきましたご回答は、まさに、私が行いたかった作業そのもので、 他の方のご回答も一通り試してみた中で、今回は、nishi6様のものを使用させていただくことに決めました。 >選択の方法がよく分かりませんが、『+』キーの選択は不要かもしれません。 言われてみて、気がつきました。 「+」と言うことは、同時に押すというイメージになってしまい、不適当でした。 同時に押すこともあれば、順次押す場合もあるわけで、 これについて、どのように記載するか、これから検討してみます。 何かご提案などがあれば、是非カキコください。 この度は、本当にありがとうございました。 今後もお世話になりますときは、どうかよろしくお願い致します。