【無料配信♪】Renta !全タテコミ作品第1話

(1)エクセルファイルを開けたときのアクティブセルを設定。

(2)そのセルに値を入力後、ENTERで違うセルに移動。
 (違うセルは、隣接していない)

(3)入力後、ENTERでまた違うセルに移動。

(4)数個のセルに入力後は、任意のセルに値を入力できるようにする。

マクロでできることなのかわかりませんが、
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

規則性がわかりませんが、マクロを使わなくても、同様なことは可能ですよ。



CTRLキーを押しながら、入力したい順に該当セルをクリックする。

Tabキーを1回押すと、最初に選択したセルに入力できます。入力完了後Enterキーを押すと、2番目に選択したセルに入力できます。入力完了後Enterキーを押すと、3番目に選択したセルに入力できます。・・・

この回答への補足

そうか!
それをマクロで記録したらいいんですね^_^

補足日時:2008/06/28 20:22
    • good
    • 3
この回答へのお礼

ありがとうございます。
選択してENTERで順番に移動することはわかるんですが、
毎日の作業なので、毎回選択することを避けたいんだと思います。
(すみません、知り合いに頼まれているので・・・)

規則性もないと思いますが、
セル番地を指定して、ENTERを押してその番地に移動できれば・・・と思っています。

お礼日時:2008/06/28 20:21

やり方は色々あると思いますが、簡単なマクロを使った例です。


>(1)エクセルファイルを開けたときのアクティブセルを設定。
これは標準モジュールに、
Sub Auto_Open()
Sheets("Sheet1").Range("B4").Select
End Sub
という様に入れてやれば出来ます。
>(2)そのセルに値を入力後、ENTERで違うセルに移動。
Sheet2を、ジャンプ先位置指定用のシートにします。
たとえば、Sheet2のB4に、Sheet1のB4からのジャンプ先のアドレスを、A1といった様に入力しておきます。
Sheet1のシートモジュールに、
Private Sub Worksheet_Change(ByVal Target As Range)
If Sheets("sheet2").Range(Target.Address) = "" Then Exit Sub
ActiveSheet.Range(Sheets("sheet2").Range(Target.Address).Value).Select
End Sub
というマクロをいれてやると、あるセルに値を入力して、確定したとき、Sheet2の該当セルに番地が指定してあれば、Sheet1の指定先のセルにジャンプし、該当セルが空なら何も起こりませんので、普通に作業できます。
ご参考まで。
    • good
    • 0
この回答へのお礼

オートでマクロが動くようにすることができるんですね!
知らなかった・・・
ひとまず、NO.1の方のCtrl+セル指定で、
マクロを登録する方法が一番簡単でしたので、
ボタンクリック式でやりたいと思いますが、
ボタンを表示しない方法として、
こちらでも試したいと思います。

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

お礼日時:2008/06/28 21:04

このQ&Aに関連する人気のQ&A

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

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセル2010セル入力後指定の離れた場所に移動?

エクセルについての質問ですが、A1に文字を入力してEnterキーなどを押した後にA3などの離れた場所に自動で空白セルに移動させることはできるのでしょうか?いろいろ調べてみましたが解決できなかったのでわかる方がおりましたらお願いします。関数についてはよくわかりません。

Aベストアンサー

関数の問題ではありません。


ご相談に書かれたことは,例えば次のように設定しておくと出来ます。

手順:
A1セルを選び,ホームタブの書式▼から「セルのロック」を選ぶ(「セルのロック」の選択を外す)
A3セルを選び,ホームタブの書式▼から「セルのロック」を外す
必要に応じて,他の行きたいセルもセルのロックを外す

校閲タブから「シートの保護」を開始し,その際に「ロックされたセルの選択」のチェックを外してOKする。

A1に入力し,Enterすると,A3に移動する。

Qエクセルでエンターを押すと任意のセルに移動は出来ますか?

エクセルでエンターを押すと任意のセルに移動は出来ますか?
A1のセルでエンターを押すとC1に移動するようにしたいです。
宜しくお願いします^^

Aベストアンサー

No.2の補足に対する回答です

Private Sub Worksheet_Change(ByVal Target As Range)
 Select Case Target.Address(False, False)
  Case "A1"       'このセルが変更されたら---(1)
   Range("C1").Select 'このセルに移動する---(2)
  Case "C1"       'このセルが変更されたら---(1)
   Range("A2").Select 'このセルに移動する---(2)
  Case "A2"       'このセルが変更されたら---(1)
   Range("C2").Select 'このセルに移動する---(2)
  Case Else
 End Select
End Sub

もし、A列を変更した場合に同じ行のC列、C列を変更した場合に次の行のA列というロジックであれば、
Private Sub Worksheet_Change(ByVal Target As Range)
 Select Case Target.Column
  Case 1 'A列が変更されたら---(1)
   Cells(Target.Row, 3).Select 'C列の同じ行に移動する---(2)
  Case 3 'C列が変更されたら---(3)
   Cells(Target.Row + 1, 1).Select 'A列の次の行に移動する---(4)
  Case Else
 End Select
End Sub

No.2の補足に対する回答です

Private Sub Worksheet_Change(ByVal Target As Range)
 Select Case Target.Address(False, False)
  Case "A1"       'このセルが変更されたら---(1)
   Range("C1").Select 'このセルに移動する---(2)
  Case "C1"       'このセルが変更されたら---(1)
   Range("A2").Select 'このセルに移動する---(2)
  Case "A2"       'このセルが変更されたら---(1)
   Range("C2").Select 'このセルに移動する---(2)
  Case Else
 ...続きを読む

Qエクセルの入力セルを自動的に移動させることは可能ですか?

今エクセルで名簿を打ち込んでいるのですが、入力部分のセルが一定の場所に来たら、任意の場所に自動的に移動させることって可能でしょうか?
要は横一列に打ち込んでいるんですが、必要な部分で下の行に移動したいんですよ~。
どなたかご存じでしたら教えて下さい<(_ _)>

Aベストアンサー

#1の方の回答でも大丈夫ですが、共同利用しているパソコンで、入力後のセル移動の方向を変更すると、他の利用者が困ることも多いですから、Tabキー(右セルに移動)とEnterキー(下セルに移動)を使い分けてください。

範囲選択してTabキーで次のセルに進めば、基本は右に行き、右端までくると次の行の左端に進みます。

なお、範囲選択してTabキーで進む方法は、矢印キーやクリックで範囲選択が解除されるので注意してください。

また、範囲選択しないでも、Tabキーで次に進み、右端のセルを入力後、そこだけEnterキーを押すと、Tabキーを押し始めたセルの下のセルに進みます。

こちらも、矢印キーやクリックをすると、Tabキーを押し始めたセルがリセットされます。

いずれにしても、矢印キーやクリックで、次の入力するセルを指定することは厳禁です。

ちなみに、Shift+Tabキーで、Tabキーと逆に、Shift+EnterキーでEnterキーと逆に動きます。

QEXCEL あるセルに数字が入力されれば既存マクロ実行させたい

ボタン等のグラフィックオブジェクトのマクロ実行は簡単なのですが、
ある位置のセルにデーターが入力されれば、
既存のマクロを自動実行させることできますか?

Aベストアンサー

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
if Range(ある位置) <>"" then call 既存のマクロ名
End Sub

ある位置と既存のマクロ名を変更して使ってみてください。
あと このVBAは 操作するワークシートのほうに記述します。

QExcel VBA あるセルでENTERを押すと特定のセルへ移動したい

Excel VBAで例えばセル"A2"をセレクトしている状態で
「ENTER」を押すとB5に自動的にセレクトすることはできないでしょうか?

Worksheet_Change関数を使おうと思ったのですが
"A2"の中身が変化しないと発動しません。

Worksheet_SelectionChange関数を使って"A2"を選択している状態で「ENTER」を押すと"A3"が選択されることを利用し、
「"A3"が選択されたら"B5"に飛ぶ」
も考えたのですが、マウスやキーボード操作で"A3"を
選択すると"B5"に飛んでしまうので、これも使えません。

何か対策案はないでしょうか。ご教授よろしくお願いします。

Aベストアンサー

こんばんは。

これは、定番のコードですが、私は、それに、もう少し工夫を凝らしてみました。
本来は、クラスによるインスタンスが良いとは思いますが、それを一般的にお勧めするには、ちょっと荷が重いような気がしました。

'<標準モジュール>

Private Sub ReturnDirectrion2SelectCell()
 If ActiveCell.Address(0, 0) Like "A2" Then
  Range("B5").Select
 Else
  'Original ReturnDirection の再現
  On Error Resume Next
  Select Case Application.MoveAfterReturnDirection
  Case xlDown
    ActiveCell.Offset(1).Select
  Case xlToRight
    ActiveCell.Offset(, 1).Select
  Case xlToLeft
    ActiveCell.Offset(, -1).Select
  Case xlUp
    ActiveCell.Offset(-1).Select
  End Select
 End If
End Sub

Sub SetKeys()
  '設定用
  Application.OnKey "~", "ReturnDirectrion2SelectCell"
  Application.OnKey "{Enter}", "ReturnDirectrion2SelectCell"
End Sub
Sub SetOffKeys()
 '解除用
 Application.OnKey "~"
 Application.OnKey "{Enter}"
End Sub

'-----------------------------------------

自動設定が必要な場合は、以下のコードを加えてください。

'-----------------------------------------
'<標準モジュール>
Sub Auto_Open()
 Call SetKeys
End If
Sub Auto_Close()
 Call SetOffKeys
End If
'-----------------------------------------

なお、現在の設定では、全てのブックの全てのシートに同じように適用されます。Auto_Open等の代わりに、例えば、Worksheet_Activate や Workbook_SheetActivateなどに、SetKeysをCall し、Worksheet_DeactivateやWorkbook_SheetDeactivateに、SetOffKeysをCallするようにすると良いと思います。

こんばんは。

これは、定番のコードですが、私は、それに、もう少し工夫を凝らしてみました。
本来は、クラスによるインスタンスが良いとは思いますが、それを一般的にお勧めするには、ちょっと荷が重いような気がしました。

'<標準モジュール>

Private Sub ReturnDirectrion2SelectCell()
 If ActiveCell.Address(0, 0) Like "A2" Then
  Range("B5").Select
 Else
  'Original ReturnDirection の再現
  On Error Resume Next
  Select Case Application.MoveAfterReturnDirection
  ...続きを読む

Qエクセル 1文字入力すると自動で横にセル移動

現在エクセルを利用してアンケートの結果入力をしています。
各セルには1文字の数字しか入れないのですが、
「数字」⇒タブキー(横移動)で1つ1つ打っています。

しかし、タブキーを使用しているとうち間違いなどがあり、セルが一つずつずれてしまったりしてしまいます。

どうにかエクセルに1文字入力すると何のキーも押さずに
自動で横にセル移動してくれるというようなことを設定できないでしょうか?

初心者ですいませんが、お願いします。

Aベストアンサー

私もその手の仕事が多いのでご要望自体は非常によくわかるのですが、
確定する前の入力の有無を捉えるのは難しいと思われます。

ご要望の本質的な内容としては、
例えば、
 3⇒Tab⇒1⇒Tab⇒4⇒Tab⇒2⇒Tab⇒5⇒Enter
とする代わりに
 31425⇒Enter
で済ませたい、ということですよね。

で、代替案ですが、
特定の列に複数の項目をまとめて入力し、数式でバラすようにすれば、
結果として、ご要望と同様の操作で入力できるようになります。

入力する列の表示形式を文字列に設定し、例えば、"31425"のように入力。
表示する列でMID関数を用いて、例えば =MID(A1,3,1) のようにしておけば、
3文字目の4を取り出すことができます。

桁数を揃えるために、"31-25"のように、
無回答の際に入力する文字をあらかじめ決めておく必要があります。
(必要があればあとから置換等を用いて削除する)

その後の集計処理の方法によっては、=VALUE(MID(A1,3,1)) のようにして、
取り出した文字を数値に戻しておいた方が良いかもしれません。

また、入力ミスを防ぐために、データ>入力規則 で
入力可能な文字列の長さをあらかじめ指定しておくのも有効です。

項目数が多い場合には、一度にまとめて入力すると修正が困難ですから、
4ないし5項目ごとに入力列を分けた方が良いと思います。

以上、ご参考まで。

私もその手の仕事が多いのでご要望自体は非常によくわかるのですが、
確定する前の入力の有無を捉えるのは難しいと思われます。

ご要望の本質的な内容としては、
例えば、
 3⇒Tab⇒1⇒Tab⇒4⇒Tab⇒2⇒Tab⇒5⇒Enter
とする代わりに
 31425⇒Enter
で済ませたい、ということですよね。

で、代替案ですが、
特定の列に複数の項目をまとめて入力し、数式でバラすようにすれば、
結果として、ご要望と同様の操作で入力できるようになります。

入力する列の表示形式を文字列に設定し、例えば、"31425"のよう...続きを読む

Qセルの値が変ると自動でマクロが実行される。

セルの値が変ると自動でマクロが実行されるVBAを教えて下さいm(_ _ )m
例えば、シート1のA1の値が変ると、マクロAが実行される。
シート1のA2の値が変ると、マクロBが実行される。
と一つのシート内に複数のイベントを設置したのですが、イマイチわかりません。
知恵をお貸し下さい。

Aベストアンサー

こんにちは
お邪魔します。

(1)まずはオーダー通りの基本型

Private Sub Worksheet_Change(ByVal Target As Range)
' ' 複数セルが変更された場合(単セルでない場合)は処理を抜ける
If Target.Count > 1 Then Exit Sub
' ' 変更されたセルが1列めでない場合は処理を抜ける
If Target.Column <> 1 Then Exit Sub
' ' 変更されたセルの行位置によって処理を分岐する
Select Case Target.Row
Case 1
' A1 の場合の処理
MsgBox "A1" ' 確認用(確認が済んだら当行削除)
Case 2
' A2 の場合の処理
MsgBox "A2" ' 確認用(確認が済んだら当行削除)
End Select
End Sub

(2)セルの位置によってもっと細かく分岐したい場合

Private Sub Worksheet_Change(ByVal Target As Range)
' ' 複数セルが変更された場合(単セルでない場合)は処理を抜ける
If Target.Count > 1 Then Exit Sub
' ' 変更されたセルの 列位置 によって処理を分岐する
Select Case Target.Column
Case 1 ' 1列めなら
' ' 変更されたセルの 行位置 によって処理を分岐する
Select Case Target.Row
Case 1 ' 1列め の 1行め なら
' A1 の場合の処理
MsgBox "A1" ' 確認用(確認が済んだら当行削除)
Case 2 ' 1列め の 2行め なら
' A2 の場合の処理
MsgBox "A2" ' 確認用(確認が済んだら当行削除)
End Select
Case 2 ' 2列めなら
' ' 変更されたセルの 行位置 によって処理を分岐する
Select Case Target.Row
Case 1 ' 2列め の 1行め なら
' B1 の場合の処理
MsgBox "B1" ' 確認用(確認が済んだら当行削除)
Case 2 ' 2列め の 2行め なら
' B2 の場合の処理
MsgBox "B2" ' 確認用(確認が済んだら当行削除)
End Select
End Select
End Sub

(3)セルのアドレスを採り文字列で分岐したい場合
   (個人的にはあまりお奨めしていませんが、知っておいた方が好いもの)

Private Sub Worksheet_Change(ByVal Target As Range)
'' ' 変更されたセルの 参照文字列(A1型) によって処理を分岐する
Select Case Target.Address(False, False)
Case "A1"
MsgBox "A1" ' 確認用(確認が済んだら当行削除)
Case "A2"
MsgBox "A2" ' 確認用(確認が済んだら当行削除)
Case "B1"
MsgBox "B1" ' 確認用(確認が済んだら当行削除)
Case "B2"
MsgBox "B2" ' 確認用(確認が済んだら当行削除)
End Select
End Sub

とりあえず、単セルの場合だけ、理解を深めてみましょう。
複数セルに値変更があった場合については、その後でいいと思います。
(1)にある
If Target.Count > 1 Then Exit Sub
If Target.Column <> 1 Then Exit Sub
のような記述はイベントプロシージャでは多用される基本中の基本ですから
よーく咀嚼して呑み込んじゃってください。

一応、いわずもがなですが、
上に挙げたようなイベントプロシージャを複数併記することはできませんので
使わないものはコメントブロックして下さい。
VBE(Visual Basic Editor)のツールバーに[編集]というのを追加してあれば
[コメントブロック]、[非コメントブロック]というボタンがありますので適宜。

また、イベントプロシージャで注意するべき点として
例えば今回のChangeイベントの処理中にセルの値を変更すれば
再度Changeイベントが呼び出される(再帰)ということを知っておいてください。
その場合、
  Application.EnableEvents = False
  ' 処理
  Application.EnableEvents = True
のような形で、再帰を回避します。

私自身VBAを覚え初めの頃は、イベントプロシージャとばかり格闘して
日に何百回もエラーを出しながら納得がいくまで色んなことを試していた覚えがあります。
・オブジェクトやプロパティの基本的な扱い方
・条件分岐
などの基本事項を覚えるのには最適の課題ですから、頑張って挑戦し続けてください。

以上です。

///
Re:#2 ちょっと違うかも。
それは、「A1 と 同じ値 に変更された セル があった場合」の処理になっています。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("A1") Then
MsgBox Target.Address
End If
End Sub
として、例えば、C3セルにA1と同じ値を設定すると違うのがわかると思います。
あしからず、、、

こんにちは
お邪魔します。

(1)まずはオーダー通りの基本型

Private Sub Worksheet_Change(ByVal Target As Range)
' ' 複数セルが変更された場合(単セルでない場合)は処理を抜ける
If Target.Count > 1 Then Exit Sub
' ' 変更されたセルが1列めでない場合は処理を抜ける
If Target.Column <> 1 Then Exit Sub
' ' 変更されたセルの行位置によって処理を分岐する
Select Case Target.Row
Case 1
' A1 の場合の処理
MsgBox "A1" ' 確認用(確認が済んだら当行削除)
...続きを読む

QエクセルVBAで、条件に一致するセルへ移動

 エクセルVBAでシート内を検索し、条件に一致するセルを選択させたいのですが、どのようにしたら良いでしょうか?
 同一データはシート内に一つしか無い前提です。
勉強不足ですみませんが、どなたかご教授お願いします。

Aベストアンサー

こんにちは。maruru01です。

Findメソッドがいいでしょう。
こんな感じ


Dim rg As Range

Set rg = ActiveSheet.Cells.Find(What:="検索文字列")
If rg Is Nothing Then
  MsgBox "シート内には見つかりませんでした。"
Else
  rg.Select
End If


Findメソッドの詳細は、VBAのヘルプを参照して下さい。

Q数値入力で簡単に該当のセルへ移動できませんか?

エクセル2007(2010)です。

行が名前(約50名)、列が1~12月となっています。
「3月、山田、500万」という伝票があります。
伝票はランダムに出てきますので、毎回名前を探して、該当のセルに数値を入力します。

そんなに量が多くないので、毎回スクロールして探していますが、
簡単に該当のセルに飛ぶ方法はないものでしょうか?

それが出来たら他の表にも応用したいと思っています。
宜しくお願いします。

Aベストアンサー

こんにちは。

私ならば,入力用のフォームをVBAで作るでしょう。フォームの名前のリストと月のリストを選択して数値を入力すれば,しかるべきセルに値が入るようなプログラムです。

これ位ならば,簡単でしょう(私には・・・)。ちょっとExcel VBAを勉強すれば出来ますよ。それができれば応用が利きます。

QEnterキーでマクロを起動さす。

Excelの(例)A1のセルに検索値を入力しEnterキーを押すと事前に組まれたマクロが起動する方法を教えて下さい。

又はEnterキーにマクロは設定できませんか?

Aベストアンサー

#4のnojioさんの補足ということでお読みください。(書いているうちにかぶってしまいました。)

Worksheet_Changeがsumi-hamaさんの意図かもしれませんが・・・下記はEnterに対して機能します。


下記コードを標準モジュールに貼り付け、
 Onkey_Set を実行することでEnterキーにマクロが割り当てられます。
 マクロ側で(MacroTest)Sheet1のA1を特定しています。

 Onkey_Off を実行することでEnterキーは元の機能に戻ります。


'Enterキーにマクロを割り当て
Sub Onkey_Set()
  Application.OnKey "{Enter}", "MacroTest"
End Sub

'デモ(Sheet1のセルA1のみで機能させる)
Sub MacroTest()
  If ActiveSheet.Name = "Sheet1" Then
    If ActiveCell.Address(0, 0) = "A1" Then
      MsgBox "Sheet1のセルA1でEnterキーを押しました"
    End If
  End If
End Sub

'Enterキーを元の機能に戻す
Sub Onkey_Off()
  Application.OnKey "{Enter}"
End Sub

#4のnojioさんの補足ということでお読みください。(書いているうちにかぶってしまいました。)

Worksheet_Changeがsumi-hamaさんの意図かもしれませんが・・・下記はEnterに対して機能します。


下記コードを標準モジュールに貼り付け、
 Onkey_Set を実行することでEnterキーにマクロが割り当てられます。
 マクロ側で(MacroTest)Sheet1のA1を特定しています。

 Onkey_Off を実行することでEnterキーは元の機能に戻ります。


'Enterキーにマクロを割り当て
Sub Onkey_Set()
  Applic...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング