エクセルの行追加マクロについて

このQ&Aのポイント
  • 2007エクセルマクロ初心者が、スケジュール表の行追加マクロについて相談しています。関数式を壊さずに行追加したいが、パスワードが要求される問題や、シート保護が解除される問題が発生しています。
  • マクロを実行するとパスワードが要求されるため、パスワードを聞かれないようにする方法を求めています。また、パスワードを入力した後は、シートの保護解除の選択が保護を解除してしまうという問題もあります。
  • 過去にパスワード記載のマクロを試しましたが、表へのオートシェイプの描写ができなかったため、断念しました。行追加マクロを実行する際にスムーズに行える方法を教えていただきたいです。
回答を見る
  • ベストアンサー

エクセル 行追加マクロについて

エクセル 行追加マクロについて 2007エクセルマクロ初心者です。 スケジュール表を作成、行追加マクロを作ろうとしてます。 シートの上下に表があり、上の表に行追加です。 関数式を壊したくないので、一部セルへロックをかけています。 以下の点についてご教授をお願いいたします。 行追加マクロを実行するとパスワードを要求されます。 聞かれないようにできないでしょうか。? パスワードを入力した以降は要求されませんが シートの保護解除を選択すると保護が解除されてしまいます。 パスワード記載のマクロを試したことがありますが、 表へオートシェイプが描写できなかったので断念しました。 Sub 行追加() With ActiveSheet 'シート保護解除 .Unprotect Range("A65536").End(xlUp).Offset(-8).Select ActiveCell.Resize(1, 79).Select Selection.Copy Selection.Insert Shift:=xlDown Range("A65536").End(xlUp).Offset(-8).Select ActiveCell.Resize(1, 9).Select Selection.ClearContents 'シート保護 .Protect DrawingObjects:=False, Contents:=True, Scenarios:= _ True End With End Sub

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

マクロにパスワードを記載して,マクロにもパスワードを入れさせる以外,打つ手はありません。 修正例: Sub 行追加()  With ActiveSheet           ’正しいパスワードを記載する  .protect password:=2234 userinterfaceonly:=true  Range("A65536").End(xlUp).Offset(-8).Select  ActiveCell.Resize(1, 79).Select  Selection.Copy  Selection.Insert Shift:=xlDown  Range("A65536").End(xlUp).Offset(-8).Select  ActiveCell.Resize(1, 9).Select  Selection.ClearContents  End With End Sub さらに,VBE画面で表示メニューからプロジェクトエクスプローラを確認,当該のブックであるVBAProjectを右クリックしてプロパティを確認,保護のタブでマクロを見せないためのパスワードを2回入力し,ブックを保存して閉じて開き直します。 >パスワード記載のマクロを試したことがありますが、 >表へオートシェイプが描写できなかったので断念しました。 少し意味が分かりにくいですが,正しく作成すればきちんと出来ます。諦めたら,それは仕方有りません,できないままです。

yuma07chan
質問者

お礼

出来ました。ありがとうございました。

関連するQ&A

  • エクセル マクロ 保護解除とテキストボックス追加

    エクセル マクロ 保護解除とテキストボックス追加 作業工程表へ日付けを入力すると■でべた塗りされ、 ボタンで行挿入とテキストボックスが追加(追加後にテキスト入力と移動可能)仕様を作りたいです。 式保護のためD2~R7はロックさせてますが、次の手順で操作するとセルの保護が解除されてしまうため、解除されないようにしたいです。 (1)ファイルを開く、マクロ有効 (2)テキスト追加ボタンで選択したセルの位置へテキストボックス追加(入力、移動可能)  この時、保護解除されていない。 (3)行挿入ボタンで行挿入、D2~R8保護解除される。 Sub テキストボックス() ActiveSheet.Shapes.AddTextbox msoTextOrientationHorizontal, _ Selection.Left + 3, Selection.Top + Selection.Height - 11, _ 50#, 12# End Sub Sub 行挿入() With ActiveSheet .Protect Password:="123", DrawingObjects:=False, UserInterfaceonly:=True Range("A65536").End(xlUp).Offset(0).Select ActiveCell.Resize(1, 23).Select Selection.Copy Selection.Insert Shift:=xlDown Range("A65536").End(xlUp).Offset(0).Select ActiveCell.Resize(1, 3).Select Selection.ClearContents End With End Sub

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

    最終行の1つ下の行に100000と入力したいですが Range("b65536").Select Selection.End(xlUp).Select ActiveCell.Offset(0, 1).Value = 100000 としてもうまく行きません Selection.End(xlUp).Select この部分だけで なんとかなるのでしょうか よろしくお願い致します

  • エクセルで行を非表示にするとアクティブなセルが・・・

    エクセルで行を非表示にするとアクティブなセル?行?がどこかわからなくなり、マクロでアクティブなセルを移動するときにエラーが出ます。 Sub example() ActiveSheet.Range("D3").Select Do Until ActiveCell = 23 If ActiveCell <> "" Then ActiveCell.Offset(1, 0).Select ElseIf ActiveCell <> "" Then ActiveCell.Offset(1, -3).Select ElseIf ActiveCell <> "" Then ActiveCell.Offset(1, -6).Select Else: ActiveCell.EntireRow.Select Selection.EntireRow.Hidden = True ActiveCell.Offset(0, -6).Select End If Loop End Sub 一番下のActiveCell.Offset(0, -6).Select にエラーが出るのですが、どうすればセルを移動できるでしょうか?

  • エクセルのマクロで

    お世話になります 下記のマクロで実行した所 100まで書式設定で保護、ロックしたいのですが b3:l3はロックするものの 4行目以降はロックしません どうしたらいいでしょうか もう1つ、このシートはいつもc3からはじめたいのですが If ActiveCell.Value >= "" Then の部分はどうしたらいいでしょうか よろしくおねがいいたします 初心者でバカな質問ですみません Sub マクロ1() Dim i As Integer For i = 1 To 100 If ActiveCell.Value >= "" Then Range("B3:l3").Select Selection.Locked = True Selection.FormulaHidden = False End If ActiveCell.Offset(1, 0).Select Next End Sub

  • エクセル マクロ 行

    エクセル マクロについて Sheet1にはボタンがあり そのボタンをクリックすると フォームが表示してそのテキストに記入して、記録ボタンを押すと Sheet1最終行のフォームからシートにコピーするボタン方法は出来るのですが・・それだと最終行が新しい記載になってしまいます。 Range("a65536").End(xlUp).Offset(1).Select Selection = Selection.Row - 1 例えば A1 タイトル A2  小項目 A3  挿入させたい! A列の3行目から挿入して、その後も常にA3から挿入したいです。 新しい記載は常にA3にさせたいのですが、どうすれば良いのでしょうか?記述を教えて下さい。

  • EXCELのマクロについて

    お世話になっております。 以下のマクロを1万行分繰り返したいのですが、回数を1万回と指定する構文を 教えてください。よろしくお願いします。 Sub Macro16() ' ' Macro16 Macro ' ' Keyboard Shortcut: Ctrl+Shift+Z ' ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove ActiveCell.Offset(-1, 0).Range("A1:M1").Select Selection.Copy ActiveCell.Offset(1, 0).Range("A1").Select ActiveSheet.Paste ActiveCell.Offset(-1, 2).Range("A1").Select Application.CutCopyMode = False ActiveCell.FormulaR1C1 = "7/5/1905" ActiveCell.Offset(1, 0).Range("A1").Select ActiveCell.FormulaR1C1 = "7/6/1905" ActiveCell.Offset(1, -2).Range("A1").Select End Sub

  • 表の行を増やすマクロの疑問

    見積書の表があります。 A1は欄外の空白セル、B1は内容欄、C1は数量欄、D1は単価欄、E1は金額欄です。 B2からE2は値を記入する欄としE2には数量*単価の関数を埋め込みます。B3からE3までも形はそれと同じにし、E4が合計の値を記入する欄で関数は=SUM(E2:E3)です。その上で第3行を「表示しない」とします。 必要なだけの行を随時追加してゆく為に、苦労して次のような動作をするマクロ記録を作りました。 A4にフォームのボタンを置き、A4セルをクリックした後にそのボタンをクリックすれば非表示になっている直ぐ上の行を表示させてコピーし、その場に表示行として新規挿入します。 つまりE4は繰り下がりE5になりますが、自動的に関数は=SUM(E2:E4)となります。 そして新しく第4行を非表示としてやります。この繰り返しです。 記録されたマクロを見ると下のようになっています。 Sub 増行() ' ' 増行 Macro ' マクロ記録日 : ユーザー名 : ' ' ActiveCell.Select ActiveCell.Offset(-1, 0).Range("A1:E3").Select Selection.EntireRow.Hidden = False ActiveCell.Offset(0, 0).Range("A1:E1").Select Selection.Copy Selection.Insert Shift:=xlDown ActiveCell.Offset(1, 0).Range("A1:E1").Select Selection.EntireRow.Hidden = True ActiveCell.Offset(1, 0).Range("A1").Select End Sub このマクロはちゃんと機能するのですが、問題はこのシートの値を記入する場所以外を 保護しようとすれば「実行時エラー'1004' RangeクラスのInsertメソッドが失敗しました」 と表示されます。 どうすればこれを避けて保護する事が出来るでしょうか。 よろしくお願いします。 なお私は超初心者なので自分でVBを記述したり意味を読み取る事はほとんど出来ません。

  • マクロ:セルの範囲指定

    エクセルマクロで困っています。 セルの範囲指定をしようとしています。 初心者過ぎて、よくわかりません。 現在のマクロ↓ Sub 済() If ActiveCell.Column = 21 Then Selection.FormatConditions.Delete '条件付き書式削除 With Selection.Interior .ColorIndex = 16 .Pattern = xlSolid End With ActiveCell.Offset(0, 1).Select With Selection.Interior .ColorIndex = 16 .Pattern = xlSolid End With ActiveCell.Offset(0, 1).Select With Selection.Interior .ColorIndex = 16 .Pattern = xlSolid End With ActiveCell.Offset(0, 1).Select With Selection.Interior .ColorIndex = 16 .Pattern = xlSolid End With ActiveCell.Offset(0, 1).Select With Selection.Interior .ColorIndex = 16 .Pattern = xlSolid End With ActiveCell.Offset(0, 1).Select With Selection.Interior .ColorIndex = 16 .Pattern = xlSolid End With ActiveCell.Offset(0, 1).Select With Selection.Interior .ColorIndex = 16 .Pattern = xlSolid End With ActiveCell.Offset(0, 1).Select With Selection.Interior .ColorIndex = 16 .Pattern = xlSolid End With ActiveCell.Offset(0, 1).Select With Selection.Interior .ColorIndex = 16 .Pattern = xlSolid End With '色変え判定セル書き換え ActiveCell.Offset(0, 5).Select ActiveCell.FormulaR1C1 = "77" ActiveCell.Offset(0, -5).Select Else answer = MsgBox("U列を選択して下さい", vbCritical) End If End Sub やりたい事は、下記の通りです。 列Uがアクティブの時にU~ACの行を塗りつぶし。 列は変動します。 今は、やり方がよく分からなかったため オフセットで一つ一つ塗りつぶしてます。 マクロを組みすぎてファイルが重くなって困っています。 回答よろしくお願いいたします。

  • エクセルマクロ-条件付き繰り返し

    マクロ初心者です。(エクセル2003使用) シート1にある表で、M列が空白以外(処理済みなどの値がある場合)である場合、その行全体をコピーし、シート2の最終行に貼り付けして、シート1からはその行を削除するマクロを作成したいと思っていますができません。 すみませんが、どなたかご教授願います。 (シート1の表) ・8行目が題目となっており、A9から表となっています。 ・表の全体サイズは、横がAからMまでで、縦はC(シー)の管理番号行分までとなっています。(Mは、空欄があったり値(処理済みなどの値)が入っていたりしています) (考えているマクロ) ・Loopの回数は、Cの管理番号が終わるまで ・IFでCに値があり、Mが空欄だった場合は、そのまま(何もしない) ・Cに値があり、Mに値があった場合は、その行全体を選択しコピーし、シート3の最終行に貼り付け、シート1のその行は削除する Sub 処理済み() Range("C9").Select Do While ActiveCell.Value = "" ActiveCell.Offset(1).Select Loop If ActiveCell.Offset(, 10).Value = "" Then そのまま Else If ActiveCell.Offset(, 10).Value = "値があったら" Then その行全体を Select.Copy Sheets("Sheet2").Select Dim 下 下 = Range("A").End(xlDown).Row ペースト 削除 End If End Sub すみませんが、どなたか教えていただけましたら助かります。 よろしくお願いいたします。

  • excel マクロ

    Sub Macro1() ' ' Macro1 Macro ' ' ActiveCell.Offset(-1, 0).Range("A1:G1").Select Selection.Copy End Sub マクロの記録だけでこのコードを作ることは可能でしょうか?

専門家に質問してみよう