• ベストアンサー

エクセルのマクロについて

cj_moverの回答

  • cj_mover
  • ベストアンサー率76% (292/381)
回答No.5

こんにちは。 #説明は長いけど、内容は至ってシンプルです。 特に明記されている訳でもないので、以前の回答では無視されているようですが、 特に説明がない場合は、普通は、ハイパーリンクを設定する話と解釈するもの、 と思いましたので、 直接の直球回答として、私は普通にハイパーリンクを前提にお話しします。 当初の目的と違うものは別件として質問があれば、 こちらからの提案を加味した対応は可能です。 「解らない時はまずマクロの記録を録る」というのは皆さん勧めることですが、 件の課題については、マクロの記録でハイパーリンクを設定できるようなものが、 手元の環境で試した処録れませんでした。 なので、自力で書くことになりますから、質問として訊くことはは妥当と思います。 内容自体はExcelの一般機能を活用するだけなので、 何れも、実質2行、簡単な内容です。 .Hyperlinks.Add、.AutoFill、等については、事後、 VBAのヘルプやWeb検索などで、扱い方を確認するようにしてください。 その時その時、解る範囲で、内容を確認したりして、放っておかないようにすると、 以後のメンテナンスに困ることも少ない、と思います。 【1つづつ増やすというマクロ】というのが一意に解釈できませんでしたので、  a) 実行する度にセル範囲の下端に【1つづつ増やすというマクロ】 と、  b) 指定したセル範囲について、一連の処理の中で連続した数字を設定するマクロ と、2種でお応えします。 以下、2種。  a) 実行する度にセル範囲の下端に【1つづつ増やすというマクロ】 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 step1■VisualBasicEditor(VBE)を表示する Alt F11 step2■VBE画面表示状態でマクロを書き込む標準モジュールを挿入する  Alt + I M step3■step2で表示された白いシートに以下の記述 (ここから→ここまで) を、コピペする  (こちらで仮の設定として、セルA1以下の範囲を対象にしています   ★アイコンで示した行の記述"A1" "A"の部分を必要に応じて書き換えてください)  (例示通りの設定として、URLを"http://aaag/1.jpg"から始まるものにしています   ◆アイコンで示した行の記述"http://aaag/1.jpg"の部分を必要に応じて書き換えてください) ' ' ===== ここから ===== Sub SetProtHyperLink() ' step5 With Range("A1") ' ★ 先頭セルは ? "A1" ?適宜書き換え .Hyperlinks.Add .Cells, "http://aaag/1.jpg" ' ◆ URLは ? "http://aaag/1.jpg" ?適宜書き換え End With End Sub Sub AddHyperLink() ' step6 With Range("A" & Rows.Count).End(xlUp) ' ★ 列は ? "A" ?適宜書き換え .AutoFill .Resize(2) End With End Sub ' ' ===== ここまで ===== Re:8774915 step4■Excel画面に戻る Alt F11  (ここで一旦上書き保存しておくといいでしょう) step5■先頭のセルに原形としてのハイパーリンクを設定するマクロを一度だけ実行  Alt + F8 → [マクロ]ダイアログ表示  [マクロ名] [SetProtHyperLink] を選択  Enter → マクロ[SetProtHyperLink] が実行される  (必要なければこのステップは飛ばして下さい) step6■指定したセル(この例ではA1)下方向に連続したセルの下端に     ハイパーリンクを【1つづつ増やすというマクロ】を実行  Alt + F8 → [マクロ]ダイアログ表示  [マクロ名] [AddHyperLink] を選択  Enter → マクロ[AddHyperLink] が実行される  (都度都度【1つづつ増やす】時に実行します) 以上■ 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓  b) 指定したセル範囲について、一連の処理の中で連続した数字を設定するマクロ 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 step1■VisualBasicEditor(VBE)を表示する Alt F11 step2■VBE画面表示状態でマクロを書き込む標準モジュールを挿入する  Alt + I M step3■step2で表示された白いシートに以下の記述 (ここから→ここまで) を、コピペする  (こちらで仮の設定として、セル範囲B1:B30を対象にしています   ★アイコンで示した行の記述"B1" "B1:B30"の部分を必要に応じて書き換えてください)  (例示通りの設定として、URLを"http://aaag/1.jpg"から始まるものにしています   ◆アイコンで示した行の記述"http://aaag/1.jpg"の部分を必要に応じて書き換えてください) ' ' ===== ここから ===== Sub SetHyperLinks() Dim c As Range With Range("B1") ' ★ 先頭セルは ? "B1" ?適宜書き換え .Hyperlinks.Add .Cells, "http://aaag/1.jpg" ' ◆ URLは ? "http://aaag/1.jpg" ?適宜書き換え .AutoFill Range("B1:B30") ' ★ セル範囲は ? "B1:B30" ?適宜書き換え End With End Sub ' ' ===== ここまで ===== Re:8774915 step4■Excel画面に戻る Alt F11  (ここで一旦上書き保存しておくといいでしょう) step5■指定したセル範囲に連続した数字でハイパーリンクを設定するマクロを実行  Alt + F8 → [マクロ]ダイアログ表示  [マクロ名] [SetHyperLinks] を選択  Enter → マクロ[SetHyperLinks] が実行される  (必要なければこのステップは飛ばして下さい) 以上■ 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 蛇足ですが、VBA と VB について。 VBAはVB(Visual Basic)とは別物と考えていた方がいいです。 今から10年以上前のVisual Basic 6.0を祖先に持つ、という共通点はありますが、 それぞれ独自に進化して来ました。 VBAの進化の在り方を喩えるならVBから見れば"ガラパゴス"的と言えると思います。 携帯電話における"ガラケー"にあたるのが今日的なVBAの位置づけと言っていいでしょう。 "ガラケー"に代わる"スマホ"的なものへの移行が予告されてはいますが、 何年先になるか?どのように変わっていくか?未だ明らかにされていません。 VBAのバージョン情報で正式名称を確認すると、少し前まで長いことずーっと Microsoft Visual Basic 6.0 でしたので、未だに勘違いしてVBAのことをVBと呼ぶ(混同している)人が多いのですが、 Microsoft Visual Basic for Applications 7.0 というのが、現行x64ビット対応版の正式名称で、名前の上でもハッキリ袂を分けています。 生物の分類の喩でいえば、「目」は共通で「科・属・種」は違うといった感じでしょうか。 Visual Basic目・VBA科・Excel VBA属・Excel2010 VBA種、、、みたいな?。 "for Applications"ですからねぇ、Excelの機能を使い熟してこそ の、VBAという側面もありますね。 とりあえず、以上です。 何か不明な点や当初の期待と違う点があれば、補足欄にでも書き込んでください。 新たに書けることがあれば、再レスします。

tidarigt
質問者

お礼

とても役に立ちました。どうもありがとうございます。

関連するQ&A

  • エクセル2010のマクロについての質問です。

    エクセルにてマクロを組もうと色々調べているのですが、 どうしてもわからないため教えていただきたいことがあります。 現在、マクロを実行すると固有の文字をアクティブセルに挿入するというマクロを作成しました。 このマクロを少し改造したいのですが、A1とB1に=のものが入っている行の特定の列のセルに固有の文字を挿入するという風にしたいです。 例えば、Aの列にはA1には1、A2には2という風に順に10間での数字が入っていて、 B1には9が入っている場合、C9のセルに固有の文字を挿入するという感じです。 B1を7に変えた場合、C7に固有の文字が挿入されるという感じにしたいです。 質問の仕方が下手でわかりにくいかも知れませんがお知恵をお貸しください。 よろしくお願いします。

  • エクセル マクロ

    ・まずルールとして決められた時間 今回は『 8:00 』~『 17:00 』以外の時間外の『 同一日付 』の日付の計算をするエクセルの マクロを組もうと考えています。少し複雑な内容になりますので私では組めなく困っております。 どうかお力添えをお願い致します。 考えている 作業としては 具体例を挙げますが (1) 『 同一日付 』の『 8:00 』~『 17:00 』以外の時間外のまとめをしたい (2) 下の例、 縦に並ぶ『 D 』セル内の 2012/07/10、7/12..と続く『 同一日付 』の時間外の時間を比較して (3) 『 同一日付 』の『 E 』と『 F 』の数字の最初の数字(時間)と最後の数字(時間)を取得し (4) 『 それ以外の時間 』には数字の上にーを引き《 エクセルの[ CTRL ]+数字の[ 5 ] 》で 引ける取り消し線 ーを引き (5) 『 D 』セル内の 2012/07/10 の『 同一日付 』が終わる『 下のセル 』 例( ● )黒丸の場所にセルを挿入し一旦『 空白を空け 』 その一旦『 空白を空け 』た『 A 』のセルに『 最初と最後の時間 』と書き込み その行の『 E 』と『 F 』に『 同一日付 』の数字の最初の数字(時間)と最後の数字(時間)を 自動で書き込むマクロを作りたいのです (6) ・『 D 』セル内の比較する『 同一日付 』は『 縦に並んでおり 』、1つの時もあれば多くて20個 ・基本的に20日~翌月20日まで(土日祝が20日に当たれば18日~20日など前後しますが) ・(3)のデータを取得し(5)で『 同一日付 』の数字の最初の数字(時間)と最後の数字(時間) を書き込むので(5)で書き込む以外の 『 同一日付 』内の時間外の時間にはすべて取り消し線を引きます ・数字の上にーを引き《 エクセルのCTRL+数字の5 》で 引ける取り消し線を引き..が説明のテキストでは表現出来ませんでしたが..必要な作業です 例で 『 時間の下に× 』を書いて見ましたが、これが取り消し線を実行した感じの時です 上手く伝えられているか分かりませんが、どうぞよろしくお願致します    A  | B | C  |     D  | E  |  F ____________|_______|_______|________________|__________________      |   |   | 2012/07/10| 17:24 | 17:37 _________________________________________________________________      |   |   | 2012/07/10| 17:15 | 17:50 __________________________________________________________________            |   |   | 2012/07/10| 17:15 | 17:22 __________________________________________________________________      |   |    |     |    |     | ●(セル挿入) → 『 最初と最後の時間 』と書き込み ___________|_______|_______|__________|_________|___________________      |   |   | 2012/07/12| 17:28 | 17:33 ___________|_______|______|___________|_________|___×___|___×___      |   |   | 2012/07/12| 17:35 | 17:38 ___________|_______|______|___________|_________|___×___|___×___      |   |   | 2012/07/12| 17:43 | 17:54 ___________|_______|______|___________|_________|___×___|___×___ 『 最初と最後の時間 』   |    |17:28  | 17:54 ___________|_______|______|___________|_________|___×___|___×___      |   |   | 2012/07/12| 17:37 | 17:45 ___________|_______|_______|___________|_________|_______|___________      |   |   | 2012/07/12| 17:50 | 17:53 ___________|_______|_______|___________|_________|_______|__________

  • エクセルの条件付き書式設定マクロについて

    エクセルの条件付き書式設定マクロについて A列からH列まで文字や数字が投入されています。 データが5,000行くらいあって、50行に1回くらい不定期で空白の行が出てきます。 データが入っている全ての範囲において、「C列が空白以外の場合に、 同じ行のA列からH列のセルの上と下を破線?(.Weight = xlHairline)左も右も縦線は実線? (.Weight = xlThin)にする」という条件付き書式を設定したいのですが、マクロが 上手く組めません。 ひとつのセルの条件付き書式の設定はマクロを組めるのですが、 A1:H5000というような広範囲で条件付き書式の設定を組むのが上手くいきません。 教えていただけないでしょうか。

  • エクセルのマクロについて

    エクセルのシートに A列の10行目から60009行めまで数字が入力されてます。 10行目から110行までの109行目までの100行のなかで 一番小さい数字から8番目に小さい数字までの8個の数値の右横のセル(B列)に 「a」というマークをつけたいのです。 同様に110行目から209行、210行から309行 というふうに59910行目~60009目 までやりたいのですがどうのようにすれば良いでしょうか? 関数で出来るならそれでも良いです。 教えていただけませんでしょうか? よろしくお願いします。

  • エクセルのマクロ

    派遣切り後、事務職の就職がようやく見つかりました。 仕事の効率を少しでも上げて、より多くの業務処理をしたいので下記のマクロを作成したいと考えています。 1ヶ月前に書籍を購入して独自でできるか試したのですがダイレクトな情報が見つからず、基礎の部分だけはできたところです。 恐縮なのですがもし、できる方がいましたらぜひ教えて頂けませんでしょうか。 下記のようにSheet1のA列の数字を1つずつ検索して、sheet2にその数字があれば、sheet2のそのセル赤くする。 全部あればすべてのセルが赤くなり、無いところがあれば白いままというマクロです。何卒宜しくお願い致します。 ●sheet1のA列に下記のような数字が羅列(200行程)しています。 238062 238075 238096 238210 91518 238230 ●sheet2のA列に下記のような数字が羅列しています。 91518 238062 238075 238096 238210 238230

  • エクセルのマクロの作成について

    エクセルのマクロの作成について教えてください!! 一つのセルの中に3行の文字があるとして・・・・ そのセルの2行目と3行目を隣のセルにうつしたいです。 例えば・・ E列の1行目のセルに あいうえお かきくけこ さしすせそ と文字が入っていて、 それを F列の1行目のセルに かきくけこ さしすせそ のみ移動させたいです。 1行~300行ほどあって、さらにデータは増え続けます、手作業での移行が困難になってきました。 そもそも一つのセルの中身の文字の一部を違うところに移動させるマクロは組めるのでしょうか。 当方初心者です。お手柔らかにお願いします。

  • Excelのマクロで

    Excelのマクロで 月ごとにセルを結合させたいのですがわかりません。 例えば 2010/2/20~2010/5/10 このとき A1~H1のセルを結合(2月) I1~AM1の結合(3月) というふうに表示させたいです。 2行目にはそれぞれ日を表示させたいのですが どうすればいいですか? 教えてくださいお願いします。 期間がが変更されたらその期間が表示されるように Excelマクロでお願いします。

  • Excelのマクロ教えてください

    初めまして。 以下のようなマクロが欲しいのですが、知識不足のため、どうしたらよのかわからず困っております。 ウェブで色々と調べてやってみましたが、期待どおりの結果を得られませんでした。 どなたかお教えいただけたら幸いです。 行いたいのは、例えば、   セルA1に文字列『1. abc』が入っているとき、先頭の番号『1』の部分だけ取り出し   (または . 以下を除いて)、セルA1の内容を数字型の『1』に書き換える という動作です。 複数のセルをドラッグして選択し、マクロのショートカットで一発変換 できたら…と思っております。 変換したい部分のセルの内容はすべて、『1. abc』のように、文字列で 「1~7の数字」、「半角の.」、「半角スペース」、「英単語」 の順になっています。 簡単なことなのかもしれませんが、自分にはさっぱりでした… どなたか回答をお願いいたします。m(_ _)m

  • ExcelでのVBAマクロについて

    質問させていただきます。 今現在、知人に設定していただいた一つのマクロを使って作業しています。 (そのマクロ自体は【選択したセル】と【直下のセル】のデータを「テキスト」として『前後のスペース』を削除し「セル内改行」で結合する。高さ調整後、1セル分上がる。というものです) 今までは1セルずつこれを使って結合し、セル内文章をまとめて一番上に持ち上げていました。しかし、今回私がやりたいのは1セルずつマクロを実行(ショートカットキーを使っていますが)するのが手間なので、5セル(上下方向にです)に対して一気に先ほどの既存マクロを適応する、という風にしたいのです。(選択セルと直下セルが結合されて選択セル内文章が増えるというやり方ですので、一番初めのポインタ位置は結合したいデータの下から二つ目でないといけません。その場合、この既存マクロを4回繰り返すマクロがほしいのです) 私自身、「記録」機能を使ったマクロしか組んだことがなかったのでVBAのほうをいじってみても知識不足でエラーばかり出てしまい、困ってしまいました。 とても説明がややこしく、分かりづらいとは思いますが、ご回答いただけると有り難いです。

  • エクセルのマクロについてなのですが…

    現在マクロを使用して数字の入力を行おうとしております。 セルのB2は変数iを入力(例えば5を入力) 値を入力する範囲はセルのCells(1,1)からCells(i,1)(下記あ~お)に 1~iまでの数字を重複する事無く入力します。 なお、セルのCells(1,1)からCells(i,1)に入力する数字は Rndを使用して乱数にしたいのですが 乱数の入力までは何とか辿り着いたのですが どうしても重複してしまいます。 ネットで調べたのですが、コピレば使えるのですが マクロの意味が良く分からないので 出来れば行ごとの意味も教えていただきたいのですが… ワガママばかりで申し訳ありません。 A B C D 1 あ 2 い 5 3 う 4 え 5 お 6 ・ ・ ・