エクセルVBAについて質問です。次のページにあるような2つのマクロを作ってください。

http://hatena88.web.fc2.com/hatena/newpage1.shtml
なお、現在勉強中ですので、下記の質問の回答者4の方のような解説を付け加えてください。
http://q.hatena.ne.jp/1158311664

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/02/02 13:43:03
  • 終了:2007/02/02 15:00:18

回答(2件)

id:taknt No.1

きゃづみぃ回答回数13539ベストアンサー獲得回数11982007/02/02 14:17:40

ポイント200pt

マクロ①


Sub Macro1()

'

' Macro1 Macro

'

' Keyboard Shortcut: Ctrl+q

'

b = 50 'オートフィルする行数

'何列まであるのか調査

For a = 1 To 256

If Cells(1, a) = "" Then Exit For

Next a

a = a - 1

'オートフィルする個所を選択

Cells(1, a).Select

'オートフィル

Selection.AutoFill Destination:=Range(Cells(1, a), Cells(b, a)), Type:=xlFillDefault

'オートフィルする列以外のコピー

e = ""

For c = 1 To b

For d = 1 To a - 1

Cells(c, d) = Cells(1, d)

e = e & Cells(c, d)

Next d

Cells(c, a + 1) = e & Cells(c, a)

Cells(c, a + 1).Select

ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:= _

e & Cells(c, a), TextToDisplay:=e & Cells(c, a)

e = ""

Next c

End Sub


なお、URLは、ハイパーリンクをつけました。


マクロ②

ハイパーリンクをつけたので クリックして開くのを マクロでやりました。

Sub Macro2()

'

' Macro2 Macro

'

'何列まであるのか調査

For a = 1 To 256

If Cells(1, a) = "" Then Exit For

Next a

a = a - 1

For b = 1 To 65536

If Cells(b, a) = "" Then Exit For

Cells(b, a).Select

Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True

Application.WindowState = xlNormal

Next b

End Sub

http://q.hatena.ne.jp/answer

id:taroemon

ご回答ありがとうございました。

完璧です。

2007/02/02 14:57:49
id:kn1967 No.2

kn1967回答回数2915ベストアンサー獲得回数3012007/02/02 14:19:29

ポイント60pt

■マクロ1

Sub Macro1()
    Dim r As Long, lp As Long
    r = 50
    Range("F1").FormulaR1C1 = "=RC[-5]&RC[-4]&RC[-3]&RC[-2]&RC[-1]"
    Range("A1:F1").Select
    Selection.AutoFill Destination:=Range("A1:F" & r), Type:=xlFillDefault
    Range("A1:F" & r).Select
    For lp = 1 To r
      Range("F" & lp).Select
      ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=Selection.Value
    Next lp
End Sub

■マクロ2

Sub Macro2()
    Dim r As Long, lp As Long
    r = 50
    For lp = 1 To r
      Range("F" & r).Select
      Selection.Hyperlinks(1).Follow NewWindow:=False, AddHistory:=True
      Application.WindowState = xlNormal
    Next lp
End Sub

何れも行数は r = 50 としています。

http://q.hatena.ne.jp/ダミー

id:taroemon

ご回答ありがとうございました。

ちゃんとできました。

2007/02/02 14:58:06
  • id:kn1967
    列数の調査は
    a = Range("1:1").End(xlToRight).Column
    行数の調査は
    a = Range("A65535").End(xlUp).Row
    ループで回さなくても、それぞれ1行で済みます。
  • id:kn1967
    お願い:
    拡張子がshtmlだとFireFoxではHTMLソースが表示されてしまいます。
    次回からは html にしてくだされば助かります。
    出来れば別サイトではなく、そのページを画像化したものを質問文に添えて(質問の際に画像を入れる事が出来ます)いただければ、よりGoodです。
  • id:taroemon
    kn1967様

    丁寧なコメントありがとうございます。
    大変参考になりました。

    拡張子の件、了解しました。今後は気をつけます。
    質問に画像を貼り付けることに関しては、
    画像の添付の仕方がよくわからないこと、
    ページを作って他サイトに転送した方が楽ということ、
    画像だと細かいことを質問できなくなる可能性がありますので、
    これまでどおりで質問させていただくことをご了承下さい。

    また機会がありましたらよろしくご指導下さい。
  • id:kn1967
    ■画像の添付の仕方

    ステップ1)画像取り込み
    作成したページをブラウザで表示してAlt+PrintScreen(クリップボードにコピーされます)

    ステップ2)画像加工
    ペイントなどに貼り付けて不要な部分をカットしてファイルとして保存

    ステップ3)はてな質問投稿への画像添付
    回答の上限数や質問カテゴリーを選択する画面の下のほうに画像添付欄が存在しますので参照を押して画像ファイルを選択する。
    URL必須やコメント受付表示なども同じく調整してから「確認するボタン」を押すようにしてください。


    ※これまで通りに質問終了後に該当ページを削除されてしまいますと、後から見に来た人への情報提供が切れてしまいます。
    見せなければならないというキマリ事はありませんが、貴殿のように『内容に関わらず、とにかく動くものが1つあれば即座に締め切ってしまう』ようなパターンだと、そのコードの持つ応用力が弱い場合や低機能な場合あるいはバグに誰かが気づいてもコメントを追加してくれるような事がまったく無くなります。
    その1つの例がループをまわさなくても1行で済むというコメントです。


    ■回答したコードのコメントの有無

    これまでの回答も見ていますが、一番最初に投稿されたプログラムであれば機能別の大雑把な説明コメントだけでも良いようなので、単機能の短いプログラムにコメントをつける必要は無いと判断いたしました。
  • id:taroemon
    そうですか。
    わかりました。
  • id:taknt
    動かない状態を 詳しく 教えてもらえないでしょうか?
    できれば 別ページ等で 開始するときの 画像とか のせてもらえると わかりやすいのですが・・・。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません