アプリ版:「スタンプのみでお礼する」機能のリリースについて

入力したいセルのみEnterキーで移動したいのですが、
出来ますか。
D4からスタートし(D4からH4)まで結合
D5 (D5からH5)まで結合
D6 (D6からH6)まで結合
A7 (A7からC7)まで結合
D7 (D7からH7)まで結合
D8 (D8からH8)まで結合
D9 (D9からH9)まで結合
D10 (D10からH10)まで結合
D12 (D12からH12)まで結合
D14-E14-F14-G14-H14
D16-E16-F16-G16-H16
B19 (B19,C19)結合
B20 (B20,C20)結合
B21 (B21,B22)結合
C21 (C21,C22)結合
D19 (D19からD22)まで結合されています
まだ続きが沢山ありませが、上記の順で移動させようと、
過去の質問回答をいろいろ実行したところ、
私には、VBAは難しくてエラーが出たり、
セルの結合がある場合思うように移動してくれなかったりして
どうにも成りません、何方か出来るだけ簡単に解り易く説明して頂けませんか。

A 回答 (11件中1~10件)

修正しました。


法則性があるようなので、全てのセルを書かず、計算で求める様にしました。
(初歩的な命令を複雑に組み合わせているだけですので
 少し勉強すれば、読めるようになると思います。)
(勉強の為、少し統一性の無い書き方をしてあります。
 いろいろな書き方が出来る例です)
デバッグしやすいように、全てのマクロを修正(追加)しています。
(Set_cellのマクロ以外は、Debug.Printの1文を追加しただけです)
Debug.Printはデバッグの為の命令です。
プログラムが、目的通り動いたら(いろいろな状況を試した後)削除してください。

方法が書いていないものは、既に教えてあるものですので、
今までの回答を見てください。
1.まずは下のコード(マクロ・プログラム)を規定の位置に貼り付けてください。

2.VBEの画面で、「イミディエイト ウィンドウ」が表示されているか確認し、無ければ表示してください。

3.EXCELの画面に戻り、EXCELの画面を小さくし、
  VBEの「イミディエイト ウィンドウ」が見える状態にして下さい。

4.「Sheet(Ver(2))」シートをアクティブにし、
  ブックを上書き保存してブックを閉じ再度開いてみてください。

5.「イミディエイト ウィンドウ」に「Workbook_Activate マクロセット」
  と表示されれば、Workbook_Activateが起動されています。

6.D4にカーソルを移し、[ENTER]を押してください。

7.「イミディエイト ウィンドウ」に「Set_Cell:D4」
  と表示されれば、Set_Cellが起動されています。

8.順に[ENTER]を押して、希望通りの動きをするか確認してください。

9.他のシートを選択したり、新規ブックを開いたりした時に
  「イミディエイト ウィンドウ」にマクロ解除の文字がでるか
  また「Sheet(Ver(2))」シートに戻った時にマクロセットの
  文字が出るか確認してください。

'***************** Sheet(Ver(2)) 内 ***********
'シートがアクティブになった(選択された)時
Private Sub Worksheet_Activate()
  Debug.Print "Worksheet_Activate マクロセット"
  Application.OnKey "{ENTER}", "Set_Cell"
  Application.OnKey "~", "Set_Cell"
End Sub

'シートがアクティブでなくなった時
Private Sub Worksheet_Deactivate()
  Debug.Print "Worksheet_Deactivate マクロ解除"
  Application.OnKey "{ENTER}"
  Application.OnKey "~"
End Sub

'***************** ThisWorkbook 内 ***********
'ブックがアクティブになった時
Private Sub Workbook_Activate()
  Debug.Print "Workbook_Activate ";
  'アクティブになっているシートが、処理シートの時
  If (ActiveSheet.Name = "Sheet(Ver(2))") Then
    Debug.Print "マクロセット";
    Application.OnKey "{ENTER}", "Set_Cell"
    Application.OnKey "~", "Set_Cell"
  End If
  Debug.Print
End Sub

'ブックがアクティブでなくなった時
Private Sub Workbook_Deactivate()
  Debug.Print "Workbook_Deactivate ";
  'アクティブだったシートが、処理シートの時
  If (ActiveSheet.Name = "Sheet(Ver(2))") Then
    Debug.Print "マクロ解除";
    Application.OnKey "{ENTER}"
    Application.OnKey "~"
  End If
  Debug.Print
End Sub

'***************** 標準モジュール 内 ***********
Private Sub Set_Cell()
  With ActiveCell
    Debug.Print "Set_Cell:" & .AddressLocal(False, False)
    Select Case .AddressLocal(False, False)
      '1つ下に移動するセル
      Case "D4", "D5", "D7", "D8", "D9"
        .Offset(1, 0).Select
      '2つ下に移動するセル
      Case "D10", "D12"
        .Offset(2, 0).Select
      '1つ右に移動するセル
      Case "D14", "E14", "F14", "G14", "D16", "E16", "F16", "G16"
        .Offset(0, 1).Select
      'その他 18行目までの不規則な移動のセル
      Case "D6": Range("A7").Select
      Case "A7": Range("D7").Select
      Case "H14": Range("D16").Select
      Case "H16": Range("B19").Select
      '最後のセル
      Case "N215": Range("D4").Select
      Case Else '19行目から 217行目までのセル
        If (.Row >= 19 And .Row <= 217) Then
          Select Case (.Row Mod 4)
            Case 3 '4で割ったら3余る行(19、23、27・・・)
              Select Case .Column
                Case 2 'B列
                  .Offset(1, 0).Select '1つ下へ
                Case 4 To 13 'E列~M列
                  .Offset(0, 1).Select '1つ右へ
                Case 14
                  Cells(.Row + 4, "B").Select '4行下のB列へ
              End Select
            Case 0 '4で割り切れる行(20、24、28・・・)
              If (.Column = 2) Then .Offset(1, 0).Select 'B列ならば、1つ下のセルへ
            Case 1 '4で割ったら1余る行(21、25、26・・・)
              Select Case .Column
                Case 2 'B列
                  .Offset(0, 1).Select '1つ右へ
                Case 3 'C列
                  Cells(.Row - 2, "D").Select '2行上のD列へ
              End Select
          End Select
        End If
    End Select
  End With
End Sub

まだ、おかしければ補足してください。

この回答への補足

有難う御座います
4.までは順調に行きましたが、
>5.「イミディエイト ウィンドウ」に「active」
  と表示されれば、Workbook_Activateが起動されています。

  * 「active」と表示されず、Workbook_Activateと表示されます、同じ意味でしょうか。

>6.D4にカーソルを移し、[ENTER]を押してください。
>7.「イミディエイト ウィンドウ」に「Set_Cell:D4」
  と表示されれば、Set_Cellが起動されています。

  * D4にカーソルを移し、[ENTER]を押してもイミディエイト ウィンドウ」に
  「Set_Cell:D4」と出ません。
  D4にカーソルを移し、Subユーザーフォームの実行を押したら出ました。

>8.順に[ENTER]を押して、希望通りの動きをするか確認してください。

   * Subユーザーフォームの実行を押し確認したところ希望通り動きました。

>9.他のシートを選択したり、新規ブックを開いたりした時に
  「イミディエイト ウィンドウ」にマクロ解除の文字がでるか
  また「Sheet(Ver(2))」シートに戻った時にマクロセットの
  文字が出るか確認してください。

  * シートを一度閉じ再度開いたら何も残っていません。

  ご指導お願い致します。

補足日時:2004/04/12 23:03
    • good
    • 0

>#9の内容以外何も入っていません。


 Subユーザーフォームの実行とは何だったのでしょう?

>Workbook_Activateだけ表示せれます。
ブック名が違っていると思います。

シート名は、Sheet(Ver(2))でいいのでしょうか?
Ver(2) でしょうか?

'ブックがアクティブになった時
Private Sub Workbook_Activate()
  Debug.Print "Workbook_Activate ";
  'アクティブになっているシートが、処理シートの時
  If (ActiveSheet.Name = "Sheet(Ver(2))") Then
    Debug.Print "マクロセット";
    Application.OnKey "{ENTER}", "Set_Cell"
    Application.OnKey "~", "Set_Cell"
  End If
  Debug.Print
End Sub

このマクロは、「ブックが開かれた時」と、
「他のブックが選択されていてこのブックを選択した時」に発生します。

まず、  Debug.Print "Workbook_Activate ";
の部分で、イミディエイトウィンドウに
Workbook_Activate と表示されます。
(この表示がでれば、このマクロが実行されたという事です。

  If (ActiveSheet.Name = "Sheet(Ver(2))") Then
の部分で、選択されたブックの表示されているシートが
Sheet(Ver(2))と言う名前なら
    Debug.Print "マクロセット";
で、イミディエイトウィンドウの
Workbook_Activateの後ろに[マクロセット]という言葉が追加されます。

シート名が全角、半角、大文字、小文字、1文字でも間違えていると、
この[マクロセット]という言葉が追加されません。

もう1度、シート名を確認して、#7の後半1.の部分に書かれている部分を
正しく修正してみてください。

「Workbook_Activate マクロセット」と表示されれば、
#9の6.以下を試してください。

・[マクロセット]という言葉が表示されたら[ENTER]を押した時の
 マクロが動きます。
 [マクロ解除]という言葉が表示されたら、[ENTER]を押しても
 マクロは動きません。
 (ブックを開いた直後は、[マクロ解除]になっていると思ってください。)
    • good
    • 0
この回答へのお礼

動きました。
動かなかった原因はやはりシートの名前が
違っていたせいでした、初歩的なミスなのでしょうが、私にはシートの名前が違うと動かないなんて考え着きませんでした。
私の為に大変貴重な時間を割いていただき、
本当に有難う御座いました。

お礼日時:2004/04/13 20:42

>>5.「イミディエイト ウィンドウ」に「active」


>  と表示されれば、Workbook_Activateが起動されています。

>  * 「active」と表示されず、Workbook_Activateと表示されます、同じ意味でしょうか。

???
5.「イミディエイト ウィンドウ」に「Workbook_Activate マクロセット」
  と表示されれば、Workbook_Activateが起動されています。

ですよ? 

>D4にカーソルを移し、Subユーザーフォームの実行を押したら出ました。

??? ユーザーフォームの実行って何でしょう?
他にもマクロを入力されているのですか?

>* シートを一度閉じ再度開いたら何も残っていません。
シートを閉じるのではなく、他のシートを選択するのです。

#8にも書きましたが、私の方と違うものは、私の方では判断つきません。
#9のプログラムのみになるようにして下さい。
(うまく動いてから少しづつ変更するようにして下さい。)

1度うまく動いたからといって、すぐに次の作業には入らないようにしてください。
プログラムというのは、今回のようにIF文やSELECT文の様に
条件分岐されます。(条件によって、異なる処理をする事)
ですから、いろいろな場合を想定し、いろいろと試さないと
(実際には、条件分岐に対する全てのテスト)
ある場合には、うまく処理されていない事も考えられるのです。

とりあえず、4までは出来ているみたいですので、
私の提示した、プログラムのみにしてから
5以降を順番に実行し、イミディエイトウィンドウにどのように
表示されているか補足してください。

この回答への補足

有難う御座います。
前回の補足でも
4.までは、#9の内容以外何も入っていません。
5.「イミディエイト ウィンドウ」に「Workbook_Activate マクロセット」
  と表示されず、Workbook_Activateだけ表示せれます。
6.D4にカーソルを移し、[ENTER]を押してください。
ENTERを押す際、マクロ側はどの状態にしておけば良いのしょうか。
ENTERをおしても、イミディエイトウィンドウに表示されません。

補足日時:2004/04/13 12:54
    • good
    • 0

1つ断っておきます。

(1つではないですけど)
#5で、「とりあえず落ち着いて、1つづつ片付けましょう! 」

と書いてあるのは、1つの問題をクリアしてから、
先に進みましょう!と言う意味です。

マクロが動かないのに、入力セルをどんどん追加して、
どうなるのでしょうか?
(追加する事により、このプログラムでは、処理できない事も出てきますが
 まずは、マクロが動くようになる為にはどうするかを
 考えるべきだと思います。)

#6の補足で、入力セルは終わっている物と思ってました。
それについては、もう一度、マクロを作成しなおします。
とにかく、何故動かないのかを考えましょう。

>起動するには、ただ、ブックを開いてマクロを有効にする。だけで良いのでしょうか。
だけでいいと思います。(マクロを作るにあたって、VBEの設定を変更したことは、ほとんどないです。)

>、"0x77f580db"命令が”0x0c0c0c0c"のメモリを参照しました、、、、、。と出て強制終了してしまいます。

これに付いては、もう私の手には負えません。
(エラーの再現もできませんし、できてもわからないと思います。)
とりあえず、WINDOWSを立ち上げなおし、
マクロの入力セル(InpCL)を#6の補足まで戻してください。
こちらのマクロと違うマクロのエラーを推測して回答するのは困難です。

>VBE画面は昨日初めて開いたしマクロを使うのも初めてです。
 それは、無謀というものです。
 少なくとも、VBEの使い方を勉強してから行うべきです。
 VBAはあきらめて、入力シート(単純に左から右や上から下に入力できるシート)を作成し、
現在のシートから参照できるようにしたらどうですか?
(D4セルで =入力!A1 のように参照する)

これらを踏まえた上で、どうしてもVBAでやりたい。
ということでしたら、
移動させる全てのセルを補足してください。
作り変えて回答します。

この回答への補足

大変ご迷惑お掛けしています、
せっかくここまで指導してもらったのに諦めたく在りません。
これをキッカケに今後マクロの勉強をしたいと思います、
どうかよろしくお願いします。
#6にもどり下記の手順で行いました。
>#6のMsgbox "Enter" 'コピーして
  Private Sub Worksheet_Activate()
・・・
End Sub
この間にカーソルを移し、[F5](ファンクションキー)
を押してから、エクセル画面に戻って、[ENTER]を押してみてください。

Microsoft Excel Enter OKが出て来ました。

移動セルですが補足は2000文字までと制限されていますので、全ては送信出来ません最初と最後を送信します。見てもらえば、解ると思います決まったパターンで出来ています。

InpCL = Array("D4", "D5", "D6", "A7", "D7", "D8", "D9", _
"D10", "D12", "D14", "E14", "F14", "G14", "H14", _
"D16", "E16", "F16", "G16", "H16", _
"B19", "B20", "B21", "C21", "D19", "E19", "F19", "G19", "H19", "I19", "J19", "K19", "L19", "M19", "N19", _
"B23", "B24", "B25", "C25", "D23", "E23", "F23", "G23", "H23", "I23", "J23", "K23", "L23", "M23", "N23", _
"B27", "B28", "B29", "C29", "D27", "E27", "F27", "G27", "H27", "I27", "J27", "K27", "L27", "M27", "N27", _
"B31", "B32", "B33", "C33", "D31", "E31", "F31", "G31", "H31", "I31", "J31", "K31", "L31", "M31", "N31", _
"B35", "B36", "B37", "C37", "D35", "E35", "F35", "G35", "H35", "I35", "J35", "K35", "L35", "M35", "N35", _
"B39", "B40", "B41", "C41", "D39", "E39", "F39", "G39", "H39", "I39", "J39", "K39", "L39", "M39", "N39", _
"B43", "B44", "B45", "C45", "D43", "E43", "F43", "G43", "H43", "I43", "J43", "K43", "L43", "M43", "N43", _
"B47", "B48", "B49", "C49", "D47", "E47", "F47", "G47", "H47", "I47", "J47", "K47", "L47", "M47", "N47", _
"B51", "B52", "B53", "C53", "D51", "E51", "F51", "G51", "H51", "I51", "J51", "K51", "L51", "M51", "N51", _
"B55", "B56", "B57", "C57", "D55", "E55", "F55", "G55", "H55", "I55", "J55", "K55", "L55", "M55", "N55", _
この間は省略させて頂きます。
"B207", "B208", "B209", "C209", "D207", "E207", "F207", "G207", "H207", "I207", "J207", "K207", "L207", "M207", "N207", _
"B211", "B212", "B213", "C213", "D211", "E211", "F211", "G211", "H211", "I211", "J211", "K211", "L211", "M211", "N211", _
"B215", "B216", "B217", "C217", "D215", "E215", "F215", "G215", "H215", "I215", "J215", "K215", "L215", "M215", "N215")

補足日時:2004/04/12 00:28
    • good
    • 0

>このプロジェクトのマクロは無効に設定されたいます


>ブックを開くとセキュリティレベルが高に設定されています、、、、、とでます。

1.EXCELのメニューから
  「ツール」→「マクロ」→「セキュリティ」
  で中を選んでください。

2.ブックを開いたときに出るメッセージで、
  「マクロを有効にする」を選んでください。

このメッセージを表示しない方法は、過去ログにあると思うので、
調べてみてください。
(とりあえず動くようにする事を目指します。)

>シート名は Sheet(Ver(2))です。
1.最初は動いたという事ですので、直してあるのかもしれませんが、
  ThisWorkbookの2ヶ所のシート名を変更してください。

Private Sub Workbook_Activate() の中の
  If (ActiveSheet.Name = "Sheet(Ver(2))") Then

Private Sub Workbook_Deactivate() の中の
  If (ActiveSheet.Name = "Sheet(Ver(2))") Then

2.処理したいシート Sheet(Ver(2)) に
  Private Sub Worksheet_Activate()
  Private Sub Worksheet_Deactivate()
  およびコードが記述されているか確認します。

ここまで出来れば、動くと思いますがどうでしょうか?

この回答への補足

起動しません。
起動するには、ただ、ブックを開いてマクロを有効にする。だけで良いのでしょうか。

>およびコードが記述されているか確認します。
コードとはどう言う意味でしょうか?
VBE画面は昨日初めて開いたしマクロを使うのも初めてです。もしかしたら、何か簡単な事をしてないとかありませんか。
VBE画面で設定後保存だけで良いのでしょうか。
保存後の手順を教えてください。
それと移動セルには限界が有るのでしょうか?
どんどん入力して行くと
行継文字( )を使いすぎています。と出てきます。
さらに、"0x77f580db"命令が”0x0c0c0c0c"のメモリを参照しました、、、、、。と出て強制終了してしまいます。

よろしくお願いします。

補足日時:2004/04/11 21:01
    • good
    • 0

一応、エラーは無くなったという事ですね。



デバッグの方法ですが、
マクロが、「動いていない」、「動いているが、何も処理されない」
の2種類が、考えられます。

動いているか動いていないかを調べるには、
Private Sub Set_Cell()
  Dim InpCL As Variant
  Dim i As Integer

  Msgbox "Enter" '←追加

を追加してください。
マクロが動いていれば、メッセージが表示されます。

メッセージが表示されれば、マクロは動いていますが、
処理がうまくいっていません。
この場合は、実際のマクロを補足してください。
(多分、こちらではないと思いますが)

メッセージが表示されない場合、マクロが動いていません。

ちょっと、マクロを説明しますと、
Private Sub Worksheet_Activate()
Private Sub Workbook_Activate()

の中の、

Application.OnKey "{ENTER}", "Set_Cell"

を行っています。
[ENTER],~(テンキーの[ENTER])が押された時に
Set_Cellというマクロを実行するという意味です。

ですから、このマクロを通れば、マクロを実行するはずです。

Private Sub Worksheet_Activate()
・・・
End Sub
この間にカーソルを移し、[F5](ファンクションキー)
を押してから、エクセル画面に戻って、[ENTER]を押してみてください。

後、入力処理をしたい、シート名は、[Sheet1]でいいですか?
違う場合は、補足にシート名を書いてください。

この回答への補足

一度は動いたのですが。

Msgbox "Enter" '←追加 ついかしましたが、変化はありませんでした。

Private Sub Worksheet_Activate()
・・・
End Sub の間にカーソルを移し[F5]を押したら
Microsoft Visual Basic
このプロジェクトのマクロは無効に設定されたいます
と出て来てしまいます。

一度、下記内容で起動したので、保存してブックを閉じ、再度開いたら起動しなくなってしまいました。
保存方法に問題があるのでしょうか。
又、ブックを開くとセキュリティレベルが高に設定されています、、、、、とでます。
'移動セル
InpCL = Array("D4", "D5", "D6", "A7", "D7", "D8", "D9", _
"D10", "D12", "D14", "E14", "F14", "G14", "H14", _
"D16", "E16", "F16", "G16", "H16", _
"B19", "B20", "B21", "C21", "D19", "E19", "F19", "G19", "H19", "I19", "J19", "K19", "L19", "M19", "N19", _
"B23", "B24", "B25", "C25", "D23", "E23", "F23", "G23", "H23", "I23", "J23", "K23", "L23", "M23", "N23", _
"B27", "B28", "B29", "C29", "D27", "E27", "F27", "G27", "H27", "I27", "J27", "K27", "L27", "M27", "N27", _
"B31", "B32", "B33", "C33", "D31", "E31", "F31", "G31", "H31", "I31", "J31", "K31", "L31", "M31", "N31", _
"B35", "B36", "B37", "C37", "D35", "E35", "F35", "G35", "H35", "I35", "J35", "K35", "L35", "M35", "N35", _
"B39")

シート名は Sheet(Ver(2))です。

よろしくお願いします。

補足日時:2004/04/11 17:21
    • good
    • 0

とりあえず落ち着いて、1つづつ片付けましょう!



1.>初めて開いた時に出ていた物が出なくなっただけだと思います、初期画面に戻す方法を教えてください。

  VBEの画面ですね?
  「メニュー」バーの「表示」から
  ・「プロジェクト エクスプローラ」
  ・「プロパティ ウィンドウ」
  ・「イミディエイト ウィンドウ」
  ・「ローカル ウィンドウ」
  ・「ウォッチ ウィンドウ」
  あたりを選択すれば出ると思います。(こういう事と違いますか?) 

  コード(プログラム)を書く画面は、
  「プロジェクト」の中のシートなりThisWorkbookなりを
  ダブルクリックすれば表示されます。

2.>"N19",)までで一区切りで、後はこのパターンを繰り返すだけですが、

  意味が分かりません。
  ・一区切りなんてありません。
  ・) の前が , で終わっていますが最後の , はいりません。
  実際にどのように入力したか、入力した部分を
  そのまま貼り付けてください。

3.>マクロが動きません
  これについてはいろいろ原因が考えられますが、実際に
  その場にはいないので判断がつきません。

  とりあえず、
  (1)黄色く表示されている行があるなら、マクロ中断中です。
     「メニュー」→「実行」→「リセット」か
     ツールバーの■をクリックしマクロをリセットしてください。
  (2)2.の部分が赤色である以上、マクロは動きません。
    まずは、2.をクリアしてください。
  (3)他のシートに移動し、元のシートに戻り、まだ動かないようなら、
     もう一度、補足してください。
     デバッグの方法をアドバイスします。

ここで、プログラムの作り方を教える事は、何とか出来ますけど、
VBAの使い方を教える事は、難しいですし、
何より必要以上に文章が長くなってしまいます。
#1さんも仰ってますが、ご自分でも、少し勉強するしかないですよ。

次の補足は、どの番号まで出来て、
どこで分からなくなっているか、又は、
どの番号がどのようにうまくいかないのかを補足してください。

この回答への補足

>1つづつ片付けましょう!
私もそうしたいので、#2を再度コピペし移動セルの追加をしました、エラーの原因はやはり,のようです、今は大丈夫です、大変失礼致しました。
"B21", "C21", "D19", "E19", "F19", "G19", "H19", _
"I19", "J19")これで良いでしょうか。
そこから、どうすれば良いのですか、エラーも出ないのにまったく動きません。
動くようにするには、どうしたら良いのでしょうか。

補足日時:2004/04/11 12:08
    • good
    • 0

あせっているのは、伝わってくるのですが、何がなんだかわかりません。



>InpCL = Array("D4", "D5",、、、が赤くなり
赤くなるのは、文法が間違っています。
作成した InpCL = Array(・・・)までを補足してください。

>一度Excelを閉じて再度開いたら元に戻ってしまったので
何が、どう戻ってしまったのでしょう?
保存しなかったという事ですか?

>再度同じ手順で入力しましたが、出来ません。
何を同じ手順で入力したのでしょう?マクロですか?
何が出来ないのでしょう?
マクロが動かないという事でしょうか?
他のシート又は他のブックを選択して、元のシートに戻ってみてください。

>VBEもいじっていたら初期画面に戻らなくなってしまいました
VBEの画面がおかしくなったのでしょうか?
マクロがおかしな結果を招いているのでしょうか?

ちょっと落ち着いて、整理して補足してください。

この回答への補足

説明不足でした。
>作成した InpCL = Array(・・・)までを補足してください。
B19、、、、"D19", "E19", "F19", "G19", "H19", "I19", "J19", "K19", "L19", "M19", "N19",)までで一区切りで、後はこのパターンを繰り返すだけですが、
コンパイルエラー修正補正式と出てしまいます。


>何が、どう戻ってしまったのでしょう?
保存しなかったという事ですか?
恐らく保存し忘れたと思います。

>マクロですか?
そうです、マクロが動きません、他のシート、ブックなどを選択してみましたが、やはり動きません。
途中で終わっているのでしょうか。
削除して最初からやり直したいのですが、削除のしかたも解りません。
>VBEの画面がおかしくなったのでしょうか?
いいえ、初めて開いた時に出ていた物が出なくなっただけだと思います、初期画面に戻す方法を教えてください。

一度はお蔭様で私の希望通り出来たのに、今はお手上げ状態で先へ進めません、どうかよろしくお願い致します。

補足日時:2004/04/10 22:57
    • good
    • 0

どのようなエラーが出ているのか分からないので


なんとも言えないんですが、
追加する場合は、
InpCL = Array("D4", "D5", .... ,"D19","セルアドレス","セルアドレス")

の様に追加していきます。
(それは多分分かっていると思います。)

InpCL = Array("D4", "D5", "D6", "A7", "D7", "D8", "D9", _
        "D10", "D12", "D14", "E14", "F14", "G14", "H14", _

の _(アンダーバー)は1つの文を2行にわたって書く場合の接続語(?)ですので、
行の1番最後に スペースを入れて_を記入します。
1行で書く場合には、必要ありませんし、
最後の文字以外でも、_の前にスペースが入っていなくてもエラーになります。

そういう事でなく「沢山」書いたらという事だと、Arrayの制限があるかもしれません。
(確認してみましたがよく分かりませんでした。)

もし、どうしても分からない様なら、どの様に入力したのかを
補足して頂ければ、どこがおかしいか分かるかもしれません。

入力セルが、沢山あるようですが、法則がない以上、計算式を使用する事も
できませんので、頑張って入力するしかありません。

ただ、入力補助のマクロを作って、入力するセルを順番にクリックし、
そのアドレスをシート上に書き出すなどの事はできると思います。

この回答への補足

本当に有難う御座います。
おしゃる通り,"D19","セルアドレス","セルアドレス") と入れたつもりですが直ぐエラーが出てしまいました。
InpCL = Array("D4", "D5",、、、が赤くなり
Private Sub Set_Cell()が黄色くなってしまいました。
入力の方は地道に行いたいと思いますが
又、困った事が出来てしまいました、
一度Excelを閉じて再度開いたら元に戻ってしまったので、再度同じ手順で入力しましたが、出来ません。
VBEもいじっていたら初期画面に戻らなくなってしまいました、どうかお助け下さい。

補足日時:2004/04/10 21:28
    • good
    • 0

もう1つの質問の方で回答しているものです。


  http://oshiete1.goo.ne.jp/kotaeru.php3?q=827458
もう1つの方では、他の方が回答しているので、
少し違う方法を記述します。

こちらは、[ENTER]が押された時のみ処理をする方法です。
もう1つの方は、[セルの値が変更されてセルが移動した時に処理をする方法です。
できる限りコメントを入れたので少し長くなってしまいました。

1.[Alt]+[F11]でVBEに移ります。

2.左上の「プロジェクトに」
  VBAProject(ブック名)
   ├Sheet1(シート名)
   ・・・
   └ThisWorkbook
  とあると思うので、
  (1)処理したいシートをダブルクリックし、右上に以下をコピー

******************この下から********************
'シートがアクティブになった(選択された)時
Private Sub Worksheet_Activate()
  Application.OnKey "{ENTER}", "Set_Cell"
  Application.OnKey "~", "Set_Cell"
End Sub

'シートがアクティブでなくなった時
Private Sub Worksheet_Deactivate()
  Application.OnKey "{ENTER}"
  Application.OnKey "~"
End Sub
******************この上まで********************

  (2)[ThisWorkbook]をダブルクリックし、右上に以下をコピー

******************この下から********************
'ブックがアクティブになった時
Private Sub Workbook_Activate()
  'アクティブになっているシートが、処理シートの時
  If (ActiveSheet.Name = "Sheet1") Then
    Application.OnKey "{ENTER}", "Set_Cell"
    Application.OnKey "~", "Set_Cell"
  End If
End Sub

'ブックがアクティブでなくなった時
Private Sub Workbook_Deactivate()
  'アクティブだったシートが、処理シートの時
  If (ActiveSheet.Name = "Sheet1") Then
    Application.OnKey "{ENTER}"
    Application.OnKey "~"
  End If
End Sub
******************この上まで********************

3.挿入→標準モジュール でモジュールを追加
  プロジェクトに
└標準モジュール
   └Module1
  が追加されていると思うのでダブルクリックし、右上に下記をコピー

******************この下から********************
'[ENTER]が押された場合に、処理されるマクロ
Private Sub Set_Cell()
  Dim InpCL As Variant
  Dim i As Integer

  '移動セル
  InpCL = Array("D4", "D5", "D6", "A7", "D7", "D8", "D9", _
        "D10", "D12", "D14", "E14", "F14", "G14", "H14", _
        "D16", "E16", "F16", "G16", "H16", "B19", "B20", _
       "B21", "C21", "D19")

  '[ENTER]が押されたセルがInpCL(移動セル)に登録されているかチェック
  For i = 0 To UBound(InpCL)
    'InpCL(移動セル)に登録されているセルの場合、
    If (ActiveCell.AddressLocal(False, False) = InpCL(i)) Then
      If (i = UBound(InpCL)) Then
        '最終の入力セルの場合1番最初の入力セルに移動
        Range(InpCL(0)).Select
      Else
        'それ以外の場合は次の入力セルに移動
        Range(InpCL(i + 1)).Select
      End If
      Exit For
    End If
  Next i
End Sub
******************この上まで********************

入力の続き部分は、InpCL を追加していけばいいようになっています。
(結合セルは、左上のセルでいいと思います。)

入力セル以外のセルで[ENTER]が押された場合は、
どのようにするのか分かりませんので、記載していません。
(現在は、[ENTER]が押されても動きません。)

何か分からなかったり、間違っていたら補足してください。

この回答への補足

有難う御座います、出来ました。
ただ、入力の続き部分は、InpCL を追加していけばいいようになっていますとの事ですが
'移動セル
  InpCL = Array("D4", "D5", "D6", "A7", "D7", "D8", "D9", _  "B21", "C21", "D19" ここ) にどんどん追加して行けばいいんですよね、でも出来ないんです、すぐエラーが出ちゃって。それに、N218まであるので、追加するのも大変です、何か良い方法ありませんか。

補足日時:2004/04/10 19:45
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!