• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マクロ ボタンと同じ名前のシートをアクティブにする)

マクロボタンと同じ名前のシートをアクティブにする

kagakusukiの回答

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.7

 回答No.6の続きです。 For i = 2 To Sheets.Count With FirstCell.Offset(YPitch * (i - 1), XPitch * (i - 1)) If .MergeCells Then Set PasteCell = .Resize(1, 1).MergeArea Else Set PasteCell = .Offset() End If End With With PasteCell CoordX = .Left + .Width / 2 - ShapeW / 2 CoordY = .Top + .Height / 2 - ShapeH / 2 If CoordX < 1 Then CoordX = 1 With .Parent.Columns(Columns.Count) If CoordX + ShapeW > .Left + .Width Then _ CoordX = .Left + .Width - ShapeW End With If CoordY < 1 Then CoordY = 1 With .Parent.Rows(Rows.Count) If CoordY + ShapeH > .Top + .Height Then _ CoordY = .Top + .Height - ShapeH End With End With Set PasteShepe = FirstShepe.Duplicate With PasteShepe .Left = CoordX .Top = CoordY .Characters.Text = Sheets(i).Name End With Next i GoTo labelEnd: label3: myBox = Empty On Error Resume Next Set myBox = Application.InputBox( _ Prompt:=myInfo(1) & "のボタンを貼り付けるセルを、" _ & vbCrLf & "マウス等を使って選択するか、或いは" _ & vbCrLf & "セル番号をA1形式で入力する事で指定して下さい。" _ , Title:=myInfo(0), _ Default:=ActiveCell.Address, Type:=8) If IsError(myBox.Row) Then myBox = MsgBox("セルが選択されていません" & vbCrLf & "セルの選択をやり直しますか?" _ & vbCrLf & vbCrLf & "[再試行]:セルの選択のやり直し" & vbCrLf & "[キャンセル]:マクロの終了" _ , vbRetryCancel + vbExclamation + DefaultButton2, "無効な選択") If myBox = vbRetry Then GoTo label3 Exit Sub End If On Error GoTo 0 Return label4: MsgBox "その設定では、セルが存在する範囲(A1:" _ & Cells(Rows.Count, Columns.Count).Address(False, False) _ & ")の外に" & vbCrLf _ & "最後のボタンを配置しなければならない事になります。" _ & vbCrLf & "ボタン配置の設定をやり直して下さい。" _ , vbExclamation, "無効な設定" GoTo label1 labelEnd: End Sub  以上です。

tanpopopoketto5
質問者

お礼

ありがとうございました!

関連するQ&A

  • マクロ 戻るボタンを押したらシートの1枚目に戻る

    各シートに「戻る」というボタンを作りましたが、 「ボタンを押したらシートの1枚目をアクティブにする」というマクロを付けたいです。 下記は、『「戻る」というマクロを2枚目のシート以降すべてに付ける』というマクロです。 このマクロの中に、各シートの「戻る」ボタンを押せば、シートの1枚目に戻るような 指示を入れたいです。 分かる方いましたら、お願いします。。。 ※下記のマクロは以前ご回答いただいたマクロを引用したものです。 /////////////////////////////////// Sub 戻るボタン設置() Dim Sht As Worksheet For Each Sht In Worksheets If Not Sht.Name = Worksheets(1).Name Then With Sht For i = 1 To 1 '幅140、高さ20のボタンを追加 .Buttons.Add(900 * i, 10, 140, 20).Text = "戻る" Next i End With End If Next Sht Sheets(1).Select End Sub

  • マクロ 各シートからシート1に戻るボタンを設置する

    各シートの同じ位置に「シート1に戻る」ボタンを付けるマクロを実行したいです。 前回教えていただいたことから、ボタンを設置するマクロはわかったのですが、 『2枚目以降のシートから、シートが終わるまで、各シートにボタンを設置する』マクロがわかりません。 1枚目は目次?的なページですので、 2枚目以降から、シートが終わるまで、決められた位置に「戻る」ボタンをつける。 という作業をマクロに記憶させたいと考えています。 ※下記は、こちらで教えていただいたものを参考にしたマクロです。 「戻る」という言葉をどこに入れてよいかもわからりません。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・ Sub 戻るボタン設置() With ActiveSheet For i = 1 '幅140、高さ20のボタンを追加 .Buttons.Add(145 * i, 120, 140, 20).Text = i Next i End With End Sub

  • マクロ ボタンに名前をつける

    ☆シート1にボタンが29個あり、 ボタンを押すとシート2やシート3のページをアクティブにして表示するマクロを作っています。 その過程で、シート1にボタンを29個作成するところまでは終わりました。 そして、次にボタン1つ1つに名前を付けたいと思うのですが、 シート2、3、4...のI2のテキストを引用してボタンの名前を付けたいです。 (各シートのタイトルはI2に記入しているため。) シート2のI2のテキストを引用してボタンに名前を付けるマクロを作ってみましたが、 ”広告事業収入”がシート2だとは限らないので、”広告事業収入”を引用せず、 ”シート2のI2”を引用してボタンの名前にするマクロにしていただきたいです。 ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ Sub シート2のボタン作成() ' Sheets(2).Select Range("I2").Select ActiveCell.FormulaR1C1 = "広告事業収入" Sheets(1).Select ActiveSheet.Shapes.Range(Array("Button 1")).Select Selection.Characters.Text = "広告事業収入" With Selection.Characters(Start:=1, Length:=9).Font .Name = "MS Pゴシック" .FontStyle = "標準" .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With End Sub ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・ いらない部分も削除していただけたら幸いです。

  • Excel 全シート上のボタンを削除 VBA

    いつも大変お世話になっております。 Excelのシート上のボタンを削除したいと考えています。 ボタンはVBAで自動で作成してます。 Sub ButtonCreate() With ActiveSheet.Buttons.Add(Range("C1").Left, _ Range("C1").Top, _ Range("C1").Width, _ Range("C1").Height) .Characters.Text = "起動" .Characters.Font.Size = 8 End With End Sub シート上にはグラフ等もあるため、 まとめてオブジェクトを消すという方法は取れません。 ボタンのみを消したいと思っています。 Worksheets("テスト").Activate ActiveSheet.Buttons.Delete と削除する方法を取っていますが、 他に方法はありますか? BOOKを指定し、全シート上の ボタンを削除する方法があれば、知りたいです。 回答よろしくお願い致します。

  • マクロのシートでのコピーができません。

    ビスタ エクセル 2007を使用しています。B2~E12まで簡単な表を作り E列で昇り順に並べ替えしました。そして並べ替えからこの表を印刷するまでマクロで完成しました。 ところが、別のシートにコピーすると印刷はされますが、並べ替えがされずに印刷だけされます。同じ表を30枚作成し、それぞれ同じ操作と印刷のマクロを組みたいのですが・・・・どなたか助けてください。 Sub ボタン5_Click() ' ' ボタン5_Click Macro ' ' Columns("E:E").Select ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("E1"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("Sheet1").Sort .SetRange Range("B2:E12") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With ActiveWindow.SelectedSheets.PrintOut Copies:=1 End Sub

  • VBAのボタン操作について。

    For i=0 to 3 with Range("A" & (i+1)) with ActiveSheet.Buttons.Add(.Left,.Top,.Width,.Height) .caption="テストボタン" .OnAction="テストアクション" End with End wirh Sub テストアクション() MsgBox "あなたがクリックしたボタンは上から○番目のボタンです。" End sub 上記マクロを実行すると、セルA1,A2,A3にテストボタンが配置されます。 3つのボタンのどれかをクリックしたとき、テストアクションが実行されますが、 ○番目の○を求めるにはどうすればよいのでしょうか?

  • <マクロ>シートの名前を変えたい

    いつも、教えていただきありがとうございます。 マクロを始めたばかりなので説明もうまくできるか分かりませんが 教えてください。 データ入力専用のシートがあります。(sheet1ですが、名前は「台帳原紙) そこにデータを入力した後、控えとしてシートを複製しています。 その後、入力のあるセルをクリアするマクロを自動記録しました。 複製は、シートの名前を指定してないので「台帳原紙(2)」となります。 そこで、自動記録したマクロに修正を加えて名前を変えるところまで 記録したいのです。 上記マクロは、「台帳原紙」にボタンを作りマクロを登録しています。 Sub Macro2() Sheets("台帳原紙").Copy Before:=Sheets(2) Sheets("台帳原紙").Select Range("A2:I19,A21:C30,I21:I30").Select Range("I21").Activate Selection.ClearContents ActiveWindow.SmallScroll Down:=-27 Range("A2").Select End Sub シートの名前は、今日の日付にしたいです。 台帳原紙のA2に今日の日付が入力されるのでそれを利用する方法でも良いのですが教えていただけませんか?

  • マクロの中に別なマクロを組み込むには

    よろしくお願いします。 excel2003でマクロを作っています。 Sheet2のC1、D1、E1にセルを赤く塗りつぶす、赤と入力、カラーインデックスの番号を入力するというマクロを作りボタンに割り当てたいと思います。 全部で色が17色あるので、マクロを17個作らなければならないと思うのですが、なるべく簡略化したいと思います。 そこで下記の「赤」というマクロの中に「色」というマクロを取り込みたいのですが、うまくできませんでした。 どうかマクロの中にマクロを取り込む方法を教えてください。 もし下記のマクロがもっとスマートに出来るようでしたら、それも教えていただけると嬉しいです。 VBAは初心者ですがよろしくお願いします。 Sub 赤() irobango = 3 ironamae = "赤" End Sub Sub 色() Worksheets("Sheet2").Range("C1").Select With Selection.Interior .ColorIndex = irobango .Pattern = xlSolid End With Worksheets("Sheet2").Range("D1").Value = ironamae Worksheets("Sheet2").Range("E1").Value = irobango End Sub

  • マクロの実行ボタンを削除するマクロ

    以下のようなコードを書いたのですが シート内にボタンができてそのボタンを最終的には削除したいです 資料作成のテンプレートとして下記コードを書いたのですが 資料ができた時にボタンがあるままだと見栄えがいまいちなのでマクロ実行ボタンを削除したくなりました。 シート数は30枚くらいあるので1シートずつマクロ実行ボタンを削除するのは正直しんどいです 一度にシートを全部選択してマクロ実行ボタンを削除したいです マクロ実行ボタンの箇所は全シート同じ箇所にあります Sub ボタン() Selection.Borders(xlEdgeBottom).LineStyle = xlNone Selection.Borders(xlEdgeRight).LineStyle = xlNone Selection.Borders(xlInsideVertical).LineStyle = xlNone Selection.Borders(xlInsideHorizontal).LineStyle = xlNone ActiveSheet.Buttons.Add(108, 40, 55, 15).Select Selection.OnAction = "図形挿入等倍" Selection.Characters.Text = "図形挿入" With Selection.Characters(Start:=1, Length:=4).Font .Name = "MS Pゴシック" .FontStyle = "標準" .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = 1 End With Range("E4").Select ActiveSheet.Buttons.Add(215, 40, 55, 15).Select Selection.OnAction = "赤枠" Selection.Characters.Text = "赤枠" With Selection.Characters(Start:=1, Length:=2).Font .Name = "MS Pゴシック" .FontStyle = "標準" .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = 1 End With Range("G4").Select ActiveSheet.Buttons.Add(323, 40, 55, 15).Select Selection.OnAction = "テキスト入り赤四角" Selection.Characters.Text = "テキスト" With Selection.Characters(Start:=1, Length:=4).Font .Name = "MS Pゴシック" .FontStyle = "標準" .Size = 11 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = 1 End With Rows("12:12").Select ActiveWindow.FreezePanes = True End Sub

  • このマクロを少し修正したい

    先日、こちらのサイトで下記のマクロを作っていただきました。 エクセルの置換えシートを使って、別のエクセルシートを一括置換えするマクロです。 ただ、置換えしたいシートのセルが結合していたり、文字の前に空欄が入っていると変換されません。 上記も認識しての置換えは、下記のマクロを修正して可能でしょうか? 修正したマクロを教えていただけると助かります。  With ThisWorkbook   If ActiveSheet Is .Worksheets(1) Then Exit Sub   For i = 1 To .Worksheets(1).Range("A65536").End(xlUp).Row    ActiveSheet.Cells.Replace _      What:=.Worksheets(1).Range("A" & i).Value, _      Replacement:=.Worksheets(1).Range("B" & i).Value, _      LookAt:=xlPart, SearchOrder:=xlByColumns   Next  End With End Sub