• ベストアンサー

エクセルでこまっています。

pkh4989の回答

  • ベストアンサー
  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.11

大変失礼しました。 入力に順番を考えなかったので、すみません。 以下は、修正モジュールです。とりあえず、急いで作りましたので、モジュールが長いです。 (1) まず、以下のモジュールを「標準モジュール」へ入れ替えてください。(前のモジュールを全て削除) Public ForCursor As Range Sub 入力設定() Application.EnableEvents = False ActiveSheet.Unprotect Union(Range( _ "S22:W23,M26:R26,S26:W26,D7:I7,C8:I8,E9:I9,C10:I13,C14:I15,C16:I17,C18:K19,C20:K22,C23:K24,C25:K26,C27:K27,C28:K28,C29:K29,E30:K30,C31:H32,D35:F36,H35:I36,K6:P7,K10:M11,K12:P14,Q11:Q12,S11:S12,U11:U12,S14,U14,W11:W14,J17,L17,S17" _ ), Range("U17,M19:R20,S19:W20,M22:R23")).Select Selection.Interior.ColorIndex = xlNone Selection.Locked = False 'ロックを外す Selection.ClearContents '入力セルのみクリア ActiveSheet.EnableSelection = xlUnlockedCells Range("D7").Select Set CurCursor = Selection(1) Application.EnableEvents = True End Sub Sub 入力_click() Call 入力設定 ActiveSheet.Protect End Sub Sub 解除_click() ActiveSheet.Unprotect End Sub (2) 次のモジュールは、「標準モジュール」の上に「Microsoft Excel Objects」があると思います。そのなかに、「Sheet1~」があるので、そのなかで、入力シートを選んでマウス右Clickして「コードの表示」を選択してください。 右側に、コードを入れるシートが表示されるので、以下のモジュールを貼り付けてください。 Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range) Application.EnableEvents = False If Target.Row = 7 And Target.Column = 11 Then If ForCursor.Row = 7 And ForCursor.Column = 9 Then Set ForCursor = ActiveSheet.Cells(8, 3) ForCursor.Select End If End If If Target.Row = 10 And Target.Column = 11 Then If ForCursor.Row = 10 And ForCursor.Column = 9 Then Set ForCursor = ActiveSheet.Cells(11, 3) ForCursor.Select End If End If If Target.Row = 11 And Target.Column = 11 Then If ForCursor.Row = 11 And ForCursor.Column = 9 Then Set ForCursor = ActiveSheet.Cells(12, 3) ForCursor.Select End If End If If Target.Row = 12 And Target.Column = 11 Then If ForCursor.Row = 12 And ForCursor.Column = 9 Then Set ForCursor = ActiveSheet.Cells(13, 3) ForCursor.Select End If End If If Target.Row = 13 And Target.Column = 11 Then If ForCursor.Row = 13 And ForCursor.Column = 9 Then Set ForCursor = ActiveSheet.Cells(14, 3) ForCursor.Select End If End If If Target.Row = 14 And Target.Column = 11 Then If ForCursor.Row = 14 And ForCursor.Column = 9 Then Set ForCursor = ActiveSheet.Cells(15, 3) ForCursor.Select End If End If If Target.Row = 17 And Target.Column = 10 Then If ForCursor.Row = 17 And ForCursor.Column = 9 Then Set ForCursor = ActiveSheet.Cells(18, 3) ForCursor.Select End If End If If Target.Row = 19 And Target.Column = 13 Then If ForCursor.Row = 19 And ForCursor.Column = 11 Then Set ForCursor = ActiveSheet.Cells(20, 3) ForCursor.Select End If End If If Target.Row = 20 And Target.Column = 13 Then If ForCursor.Row = 20 And ForCursor.Column = 11 Then Set ForCursor = ActiveSheet.Cells(21, 3) ForCursor.Select End If End If If Target.Row = 22 And Target.Column = 13 Then If ForCursor.Row = 22 And ForCursor.Column = 11 Then Set ForCursor = ActiveSheet.Cells(23, 3) ForCursor.Select End If End If If Target.Row = 23 And Target.Column = 13 Then If ForCursor.Row = 23 And ForCursor.Column = 11 Then Set ForCursor = ActiveSheet.Cells(24, 3) ForCursor.Select End If End If If Target.Row = 26 And Target.Column = 13 Then If ForCursor.Row = 26 And ForCursor.Column = 11 Then Set ForCursor = ActiveSheet.Cells(27, 3) ForCursor.Select End If End If If Target.Row = 35 And Target.Column = 8 Then If ForCursor.Row = 35 And ForCursor.Column = 6 Then Set ForCursor = ActiveSheet.Cells(36, 4) ForCursor.Select End If End If If Target.Row = 36 And Target.Column = 8 Then If ForCursor.Row = 36 And ForCursor.Column = 6 Then Set ForCursor = ActiveSheet.Cells(35, 8) ForCursor.Select End If End If If Target.Row = 36 And Target.Column = 4 Then If ForCursor.Row = 35 And ForCursor.Column = 9 Then Set ForCursor = ActiveSheet.Cells(36, 8) ForCursor.Select End If End If '--------------------------------------------------------------- If Target.Row = 7 And Target.Column = 4 Then If ForCursor.Row = 6 And ForCursor.Column = 16 Then Set ForCursor = ActiveSheet.Cells(7, 11) ForCursor.Select End If End If If Target.Row = 8 And Target.Column = 3 Then If ForCursor.Row = 7 And ForCursor.Column = 16 Then Set ForCursor = ActiveSheet.Cells(10, 11) ForCursor.Select End If End If If Target.Row = 11 And Target.Column = 3 Then If ForCursor.Row = 10 And ForCursor.Column = 13 Then Set ForCursor = ActiveSheet.Cells(11, 11) ForCursor.Select End If End If If Target.Row = 11 And Target.Column = 17 Then If ForCursor.Row = 11 And ForCursor.Column = 13 Then Set ForCursor = ActiveSheet.Cells(12, 11) ForCursor.Select End If End If If Target.Row = 12 And Target.Column = 17 Then If ForCursor.Row = 12 And ForCursor.Column = 16 Then Set ForCursor = ActiveSheet.Cells(13, 11) ForCursor.Select End If End If If Target.Row = 13 And Target.Column = 23 Then If ForCursor.Row = 13 And ForCursor.Column = 16 Then Set ForCursor = ActiveSheet.Cells(14, 11) ForCursor.Select End If End If If Target.Row = 14 And Target.Column = 19 Then If ForCursor.Row = 14 And ForCursor.Column = 16 Then Set ForCursor = ActiveSheet.Cells(11, 17) ForCursor.Select End If End If If Target.Row = 11 And Target.Column = 19 Then 'If (ForCursor.Row = 11 And ForCursor.Column = 17) Or If (ForCursor.Row = 14 And ForCursor.Column = 19) Then Set ForCursor = ActiveSheet.Cells(12, 17) ForCursor.Select End If End If If Target.Row = 12 And Target.Column = 19 Then If ForCursor.Row = 11 And ForCursor.Column = 19 Then Set ForCursor = ActiveSheet.Cells(11, 19) ForCursor.Select End If End If If Target.Row = 11 And Target.Column = 21 Then If ForCursor.Row = 12 And ForCursor.Column = 19 Then Set ForCursor = ActiveSheet.Cells(12, 19) ForCursor.Select End If End If If Target.Row = 12 And Target.Column = 21 Then If ForCursor.Row = 11 And ForCursor.Column = 21 Then Set ForCursor = ActiveSheet.Cells(11, 21) ForCursor.Select End If End If If Target.Row = 11 And Target.Column = 23 Then If ForCursor.Row = 12 And ForCursor.Column = 21 Then Set ForCursor = ActiveSheet.Cells(12, 21) ForCursor.Select End If End If If Target.Row = 12 And Target.Column = 23 Then If ForCursor.Row = 11 And ForCursor.Column = 23 Then Set ForCursor = ActiveSheet.Cells(14, 19) ForCursor.Select End If End If If Target.Row = 14 And Target.Column = 23 Then If ForCursor.Row = 14 And ForCursor.Column = 21 Then Set ForCursor = ActiveSheet.Cells(11, 23) ForCursor.Select End If End If ' If Target.Row = 12 And Target.Column = 3 Then If ForCursor.Row = 14 And ForCursor.Column = 23 Then Set ForCursor = ActiveSheet.Cells(12, 23) ForCursor.Select End If End If If Target.Row = 13 And Target.Column = 3 Then If ForCursor.Row = 12 And ForCursor.Column = 3 Then Set ForCursor = ActiveSheet.Cells(13, 23) ForCursor.Select End If End If If Target.Row = 14 And Target.Column = 3 Then If ForCursor.Row = 13 And ForCursor.Column = 3 Then Set ForCursor = ActiveSheet.Cells(14, 23) ForCursor.Select End If End If If Target.Row = 15 And Target.Column = 3 Then If ForCursor.Row = 14 And ForCursor.Column = 3 Then Set ForCursor = ActiveSheet.Cells(17, 10) ForCursor.Select End If End If If Target.Row = 18 And Target.Column = 3 Then If ForCursor.Row = 17 And ForCursor.Column = 21 Then Set ForCursor = ActiveSheet.Cells(19, 13) ForCursor.Select End If End If If Target.Row = 20 And Target.Column = 3 Then If ForCursor.Row = 19 And ForCursor.Column = 23 Then Set ForCursor = ActiveSheet.Cells(20, 13) ForCursor.Select End If End If If Target.Row = 21 And Target.Column = 3 Then If ForCursor.Row = 20 And ForCursor.Column = 23 Then Set ForCursor = ActiveSheet.Cells(22, 13) ForCursor.Select End If End If If Target.Row = 23 And Target.Column = 3 Then If ForCursor.Row = 22 And ForCursor.Column = 23 Then Set ForCursor = ActiveSheet.Cells(23, 13) ForCursor.Select End If End If If Target.Row = 24 And Target.Column = 3 Then If ForCursor.Row = 23 And ForCursor.Column = 23 Then Set ForCursor = ActiveSheet.Cells(26, 13) ForCursor.Select End If End If If Target.Row = 27 And Target.Column = 3 Then If ForCursor.Row = 26 And ForCursor.Column = 23 Then Set ForCursor = ActiveSheet.Cells(7, 4) ForCursor.Select End If End If Set ForCursor = Target Application.EnableEvents = True End Sub 終りましたら、一旦、ブックを保存・終了、再度ブックを開いてから試してみてください。

sukki123
質問者

補足

こんな長いプログラム大変だったのではないですか?ありがとうございます。 ブックを保存、終了、してから開いて。入力キーを実行すると、 Enterキーを押した直後、実行時エラー’424’: オブジェクトが必要です と 出て,Enterを押すと、 If ForCursor.Row = 7 And ForCursor.Column = 16 Then が黄色の太い線で塗られます。 どうすればよいでしょうか。 標準モジュール = ThisWorkbook でよろしいのでしょうか?初心者で すいません。

関連するQ&A

  • エクセルで教えてください

    エクセルで教えてください。 配列数式にしたいセルが多数あるのですが 1つ1つShift+Ctrl+Enterを押して決定しなければ いけないのでしょうか? マクロなどを使って配列数式を複数のセルで同時に設定することは できないのでしょうか? やり方を教えてください。 よろしくお願いします

  • Excelで日付のマクロは?

    Excelで日付のマクロは? どのようにしておこなうのでしょうか? Wordでは以下のようです。 [ツールMenu]―[マクロ]―[新しいマクロの記録]―[キーボード]―[割り当てるキー:Ctrl+D]―[割り当てButton]―[閉じる] [挿入Menu]―[日付と時刻]―[カレンダーの種類]―[西暦]―[好みのものを選択]―[OK] [ツールMenu]―[マクロ]―[記録終了]2002/03/25

  • エクセルの表にボタンを付けたい

    エクセルの初心者です。 エクセルのセルに「実行1」みたいなボタンを付けて、そこをクリックすれば、「マクロ1」を実行し、「実行2」みたいなボタンをクリックすれば「マクロ2」を実行するようにしたいのですが。 ○ マクロは、エクセルで「マクロ記録」から作成したもので、プログラムは出来ません・

  • セルの移動(マクロ)

    今晩は! お世話になります。 エクセルで多量データ(500行以上)あります。 本来ならば、データ量が多い場合、アクセスを使用した方が良いのかもしれませんが、データを元にグラフ作成等行う為、エクセル使用しています。  そこで、500行以上の次行に入力する際、スクロールするのは面倒なので、ボタン一つで入力する先頭行に移行するマクロを作成したいのですが、まだ自分でプログラムを作成するのは難しく、本などで同じ目的のマクロを見つけ、移している程度です。 今回、同じ目的のマクロが見つからず、ショートカットキーで行うやり方の必ず漏れがなく入力される列(No.「A列」)にセルを選択し、”Ctrl+↓”で入力済みの最後尾に移動。その後”Enter"で次行、入力するセルに移るという事で、この行動を”マクロの記録”をしてみました。 マクロの記録 ~(A4「No.1」)のセルを選択 ~ ”Ctrl+↓” ~ ”Enter"   の順です。 例にA4=No.1でA4~A6(No.1~No.3)まで記入しました。  標準モジュールの内容は・・・ Sub セルの移動() ’ ’セルの移動Macro ’マクロ記録日 : XXXX / X / XX ユーザー名:XXXXXXX ’ ’Keyboard  Shortcut:Ctrl+t ’   Range("A4").Select   Selection.End(xlDown).Select   Range("A7").Select End Sub ・・・と記入されています。 ですが、これでは Range("A7").Select と”A7”と指定されている為、 A7以降の行が入力されていても A7 に移行してしまいます。  これをA列のNo.(連番)が記入されている次行(連番が未記入の先頭行)に移動させるにはどこをどう修正すれば良いのでしょうか? お手数お掛けしますが、上記希望内容に相応しいプログラムのを教えて頂けると助かります。 初心者の為、宜しくお願いします。

  • エクセルマクロでご教授下さい。

    エクセルマクロでご教授下さい。 1.あるマクロをセルを入力(Enter)したら実行するには どのように記述すればいいでしょうか? 例えばG12に文字を入力しEnterした時 に実行したい。 2.あるマクロをシートを選択した時に実行するには どのように記述すればいいでしょうか? 以上宜しくお願い致します。

  • エクセルのオートフィルターをマクロで記録

    エクセルのマクロ記録でオートフィルター機能を記録したのですが フィルターのボタンを押して各項目を選択するのに (すべて) (トップテン) (オプション) (空白セル) (空白以外のセル)があるのですが (空白セル)を選択すると , Criteria1:"=" (空白以外のセル)だと , Criteria1:"<>" のようにマクロ記録されます (すべて)を選択した場合 , Criteria1:が記録されないのですが これをあえて構文として書くと、どのようになるのでしょう 他のマクロで引用したいので困っています よろしくお願いいたします

  • エクセル

    エクセルで表作成しました。 毎日、朝夕の血圧数値を記入しているのですが、「上段のセル」内に記入し、「下段のセル」に移行するとき、キーボードの下向き↓で簡単に 移行していたのに、いつの間にか、数値の下に「例えば140の下に ・・・がついて、Enterを押さないと「下段セル」に移行出来なくなりました。書式設定を教えてください。

  • Excel VBA

    Excelで7曜型勤務表を作成し、日付の下に仕事内容、残業の有無等、記入するようになっています!                                    *(B9:O13、B15:O19、B21:O25、B27:O31、B40:O45)の範囲  月を選択すると日付の行はその月にあった曜日から始まる様にしていますが、記入した()の上記範囲はそのまま残りますので、 VBAを使用してボタン操作で記入した範囲を書式はそのまま(範囲を選択してDeletを押した状態と同じ様)にしたくて本で探してこれと似た 「セルの内容を消すには」という例のマクロを当てはめ、取りあえず 最初の"B9:O13"のみ、試してみました。 Sub 勤務表のDlete() ' ' 勤務表のDlete Macro ' マクロ記録日 : 2007/2/10 ユーザー名 : ******' 'Keyboard Shortcut: Ctrl+Shift+S ' Range("B9:O13").Value = "Clear" MsgBox "セル範囲B9:O13の内容をクリアします" Range("B9:O13").Clear End Sub ・・・と記録させたところ、B9:O13間の罫線も消えてしまいました。 入力した値のみ消すにはどの様なプログラムを記録させればよいのでしょうか?  又、上記*( )範囲全てをDeletした様にする時のプログラムを教えて下さい。 VAB初心者です、宜しくお願い致します。  

  • ワード・エクセルに詳しい方お願いします。

    エクセルでCtrl+マウスでのクリックで複数セルが選択できません。 ワードの箇条書きでShift+Enterで改行されません。 いままではできていました。何か設定がかわったのでしょうか わかる方お教えください。

  • エクセル2007でのマクロの記録

    マクロ初心者です。しょうもない質問で申し訳ありません。 エクセル2007で並び替えをマクロに記録させても並び替えが実行できません(エクセル2003は可能でした)。 例えば・・・マクロの記録を実行→B4セルから下に10~1の数字を入力→その後並び替えボタンをクリックし、昇順で1~10に並び替える→マクロの記録を停止。確認のため、シート2でマクロを実行。数字は入力されるが、並び替えがおこなわれません(T_T) エクセル2007では並び替えのマクロは記録できないのでしょうか??それとも不具合ですか?もし簡単に出来る方法等があるなら教えて頂ければ幸いです。 お手数をおかけしますが、どなたかご回答を頂けると幸いです。