• 締切済み

マクロの記述

hana-hana3の回答

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.3

実行開始のシート名を記憶させて置きたいなら、変数にシート名を入れておく方法もあります。 Dim ShName as String ShName = ActiveSheet.Name Sheets(ShName).Activate ------------------------------ 別の方法 Dim Sh1 as Worksheet Sh1 = ActiveSheet sh1.Activate

関連するQ&A

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

    VBA初心者ですのでどうか詳しく教えてください。下記のマクロをエクセルで組んだのですが・・・ -------------------------------------------------------------------- Sub hideworksheets() Worksheets("sheet1").Visible = False End Sub Sub ボタン_Click() ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet1").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet2").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet3").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 Sheets("sheet4").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1 End Sub ------------------------------------------------------------ 1.上記設定で"sheet5"という別シートにボタンを設置した場合、このボタンを実行すると、シート1~4のほかにシート5まで印刷されてしまいます。シート5を印刷したくない場合のVBAの記述について教えてください。 2.「Sub hideworksheets()  Worksheets("sheet1").Visible = False    End Sub」    の箇所で、シート1を非表示にしたいのですが、このマクロを実行時、「Sub ボタン_Click()」以下のマクロを実行しようとすると、「実行時エラー1004 worksheeクラスのselectメソッドが失敗しました」のエラーがでてしまいます。シート1を非表示にし、無事印刷のマクロを実行する為の記述を教えてください。

  • マクロ

    色々やってみたものの… これ以上できません。 やりたいこと↓ 例)シート2のA~Zにデータがあります (1)シート2、A1~24をシート1、D2に貼り付ける (2)シート1を印刷、PDFでフォルダに保存(保存名は【シート2、A25】又は【シート1、D3&"_"&D4】) (3)シート2のA列を削除、シート1の(1)で張り付けたものを消す ※これをシート2、A列のデータがなくなるまで繰り返す。  ・(※)の繰り返すやり方がわからない  ・下記で実行を何度かやると印刷は上手く行くんですが   保存する時にファイル名が最初のファイル名のままで中身が上書きされてしまいます… Sub カード() ' ' カード Macro ' ' Keyboard Shortcut: Ctrl+a ' Sheets("Sheet2").Select Range("A1:A24").Select Selection.Cut Sheets("Sheet1").Select Range("D2").Select ActiveSheet.Paste Sheets("Sheet2").Select Range("A25").Select ActiveCell.FormulaR1C1 = "" Sheets("Sheet1").Select ChDir "C:\Users\sinnbasi\Desktop\カード" ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ "C:\Users\sinnbasi\Desktop\カード\RON37806_4021489.pdf", Quality:= _ xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _ OpenAfterPublish:=False ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _ IgnorePrintAreas:=False Range("D2:D25").Select Selection.ClearContents Sheets("Sheet2").Select Columns("A:A").Select Selection.Delete Shift:=xlToLeft Sheets("Sheet1").Select End Sub 詳しい方教えて頂けないでしょうか。 宜しくお願い致します。

  • マクロを使ってハイパーリンクを作りたい

    エクセルで下記作業をマクロで行いたいのですが、 途中までつくれたのですが、うまくいきません (1)sheet2をコピーしてsheet2(2)を作る (2)sheet2(2)のsheet名を任意の名前(例222)にかえる (3)sheet1の任意のセルから新しく作った222へハイパーリンクを張る 下記のようなマクロを作りましたが ハイパーリンクを張るとことでうまく行きません どうすればよいのでしょうか。。。 助けてください sub 新しいシートの追加() 'dim sheet名 as string シート名 = InputBox("新しいシート名を入力してください", "シート名の指定") If シート名 <> "" Then Sheets("Sheet2").Select Sheets("Sheet2").Copy After:=Sheets("Sheet2") ActiveSheet.Name = シート名 Sheets("Sheet1").Select Range("A3").End(xlDown).Offset(1).Select ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _ シート名 TextToDisplay:=シート名 Selection.Hyperlinks(1).SubAddress = シート名 End If End Sub

  • マクロ 追加記述の記述方法を教えて下さい

    いつもお世話になります。 以下のマクロ(参照1)で最後に「勤務表」シートのA1セルに戻って終了させたい場合、 記述の最後に、 Sheets("勤務表").Select Range("A1").Select をそのまま、入れたらシート4からシート34まで、毎回「勤務表」シートのA1セルに戻ってしまいます。 シート3から34まで指示を終えた最後に1回だけ戻るにはどの様な記述にすれば良いのでしょうか? 初歩的な質問で申し訳ありませんが、どなたか解る方、お助けいただけませんでしょうか。 よろしく、お願いいたします。 参照1 If vbYes = MsgBox("作業分担表の作業データを消去してもいいですか?", vbYesNo) Then MsgBox "消去します。" Else MsgBox "中止します。" Exit Sub End If For sheetno = 4 To 34 Worksheets(sheetno).Select ' ' Range("E5:R12,E14:R22,E24:R28,E30:R34,T4:AB16,T24:AB34").Select Selection.ClearContents                    ←ここに挿入   Sheets("勤務表").Select                               Range("A1").Select Next End Sub

  • マクロについて教えてください

    マクロの超初心者です。 数式を入力しているのではなく、配付物をエクセルで作成しているのですが、同じもの(氏名や項目は違いますが)を100枚ほど作成しているのでマクロを・・・と思ったのですがやり方が全く分かりません。 sheet1からsheet2に下記のようにデータを写したいのですが、やり方を教えてください。 ●氏名が入力されています sheet1(A9) → sheet2(C2) sheet1(E9) → sheet2(C5) sheet1(I9) → sheet2(C8) ●項目1 sheet1(A8) → sheet2(E3) sheet1(E8) → sheet2(E6) sheet1(I8) → sheet2(E9) ●項目2 sheet1(A18~D18の結合セル) → sheet2(E2) sheet1(E18~H18の結合セル) → sheet2(E5) sheet1(I18~L18の結合セル) → sheet2(E8) と反映させたいのですが、250行あるのですが、 簡単にマクロで出来ないでしょうか?? ちなみに↓コレが上記の内容で作ってみたものです。 わかりずらい質問でスイマセン。 Range("A9").Select Selection.Copy Sheets("sheet2").Select Range("C2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E9").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("C5").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I9").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("C8").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("A8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E3").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E6").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I8").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E9").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("A18:D18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E2").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("E18:H18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E5").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False Sheets("sheet1").Select Range("I18:L18").Select Application.CutCopyMode = False Selection.Copy Sheets("sheet2").Select Range("E8").Select Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=False End Sub

  • マクロでエクセルシートのコピー

    マクロでシート1を最後尾に名前をつけてコピーしたいと思ってます。 つけたい名前は、シート2のあるセルにかいてあります。 私は下記のように書いたのですが、エラーになってしまいます。 Worksheets("Sheet2").Select newsheet = Cells(1, 1) Sheets("Sheet1").Select Sheets("Sheet1").Copy After:=Sheets(newsheet) どのようにすればシートをシート名をつけてコピーできますか? 教えてください。 エクセル97です。

  • エクセルマクロについて助言下さい。

    エクセルマクロについて助言下さい。 ★やりたい事 シート名を指定しアクティブにする BOOOKに複数のセルがあり、シート名は日付(1・2など) 但し、必ず連続ではなく1~31までのシートが存在します。 現在のマクロ↓ シート名を取得し関数で指定のシートが存在するか確認しています。 作業シートのC1セルが0で指定シートなし 0でないで指定シートあり(処理開始)としてます。 作業2のI3セルに日付データがあります。 Sub 抽出() 'シート名を取得する Sheets("作業").Select Dim i As Integer Dim mySheetCnt As Integer Dim mySheetNam As String    mySheetCnt = ThisWorkbook.Sheets.Count For i = 1 To mySheetCnt mySheetNam = Sheets(i).Name Sheets("作業").Cells(i, 1) = mySheetNam Next i   Range("A1").Select If ActiveCell.Value = "" Then 'A1が空白の場合の処理 MsgBox "指定の日付のシートが存在しません" Exit Sub End If Sheets("作業").Select Range("C1").Select If ActiveCell.Value = 0 Then 'C1が0の場合の処理 MsgBox "指定の日付のシートが存在しません" Exit Sub End If Sheets("作業2").Select Range("I3").Select Sheets(ActiveCell.alue).Select End Sub このコードだと3と指定すると左から3枚目にあるシートが選択されます。 3枚目ではなくシート名が 3 を選択したいのです。。 分かりにく説明で申し訳ありませんが、教えてください。

  • エクセル ブック間コピー マクロ

    ブックA(ブック名は固定)のシートA(シート名は毎回違います)を ブックB(ブック名は固定)の一番左へコピーしたいのですがうまくいきません。 動作 :シートAでマクロを実行しブックBへシートのコピー(挿入)します。 まず第一段階のブックAのシートAをブックBへのコピーがうまくいきません。 シートAが固定シート名ならコードは Sheets("A").Select Sheets("A").Copy Before:=Workbooks("B.xls").Sheets(1) ですが・・・・ Sheets("A").SelectをWith ActiveSheet.Selectにすれば良いのですか? 申し訳ないのですが、後教授お願いします。

  • マクロでハッパーリンク2

    先日、教えて頂いたマクロですが シートの名前を数字または英字(例AAA or 123)のみにすると、うまくいきますが ハイフンを途中で入れると(例ABG-352 or ABCD-03-005)うまくリンクがいきません どこをどこを直せばいいのでしょうか Sub 新しいシートの追加() Dim シート名 As String シート名 = InputBox("新しいシート名を入力してください", "シート名の指定") If シート名 <> "" Then Sheets("sheet2").Copy After:=Sheets("sheet2") ActiveSheet.Name = シート名 Sheets("sheet1").Select Range("B3").End(xlDown).Offset(1).Select ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", _ SubAddress:=シート名 & "!A1", TextToDisplay:=シート名 End If End Sub

  • 図形をコピーするマクロ

    Sheets("Sheet1").Select ActiveSheet.Shapes("図 1").Select Selection.Copy Sheets("Sheet3").Select Range("E9").Select ActiveSheet.Paste 上記は、"Sheet1"の"図1"を、"Sheet3"の"E9"にコピーするマクロです。 これを改良して、Sheet1以外のシートがアクティブになっている時に実行すると、"Sheet1"の"図1"が、現在アクティブになっているシートのセレクトされているセルにコピーされるようにしたいのですが。 どのようにマクロを変えればいいでしょうか。