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

SHEET1のA1~A31まで、1月1日~1月31日と日付を入力しています。
SHEET2のA1~下にも日付が入力されているのですが、例えばA1~A10まで1月1日、A11~A13まで1月2日、引き続きA14~A20まで1月3日、、、、以下同じように同日付の数が一定でないような入力がされているとき、SHEET1のA1の1月1日をクリックすればSHEET2のA1へ、SHEET1のA2の2月1日をクリックすればSHEET2のA11へと頭出しのようなジャンプ方法はないでしょうか?

相変わらず説明が下手で申し訳ありませんがよろしくお願いします。

質問者からの補足コメント

  • セルには書式設定から日付を選んでいます。
    クリックはなんでもかまいません。
    入力後の移動方向は下です。
    もうしわけありません、シートイベントへの記入方法とのことですが
    わかりません。
    お手数おかけし申し訳ありません。

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/02/26 21:35
  • お返事ありがとうございます。
    それでしたらシリアル値です。
    よろしくお願いします。

    No.2の回答に寄せられた補足コメントです。 補足日時:2017/02/26 21:49
  • VBAに関しては全くの素人です、、
    標準モジュールというフォルダがないのですが、、
    無知で申し訳ありません、、」

    「エクセルについて教えて下さい!」の補足画像3
    No.3の回答に寄せられた補足コメントです。 補足日時:2017/02/27 01:19
  • ご両者のご回答に対して色々調べながらやっているのですが、情けないことにうまくいきません、、、もう少し頑張ってみます。

      補足日時:2017/03/02 18:00

A 回答 (10件)

「1」の所は「3」か「9」にして下さい(選択するほうの列番号です)


「Sheet1」と「Sheet2」は実際のシート名に変えてください。
「エクセルについて教えて下さい!」の回答画像10
    • good
    • 0
この回答へのお礼

わかりました。
やってみます。ありがとうございます。

お礼日時:2017/03/03 17:00

どちらが元だかかれていないので、赤のところを「9」か「3」にして下さい(クリックするほうの列番号です)

「エクセルについて教えて下さい!」の回答画像9
    • good
    • 0

コードを書き入れるところは合っていますが「Sheet1」や「Sheet2」は実際の変更後の名前に変えてください。


「I行なので9 C行なので3」について、行は縦方向です。アルファベットになっているのは列です。間違えでは?
「Sheet1」や「Sheet2」のどちらが I列で、どちらが C列なんでしょうか?
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
名前変更の件、了解しました。
両シートも上から下に日付を入れています。
ということは、I列、C列ですよね。
解釈間違えていますか?

お礼日時:2017/03/02 19:52

「うまくいきません」とは?具体的に説明していただくと対応可能かもしれません。


よく見えませんが次のような事はありませんか?
・シート名が実は「Sheet1」や「Sheet2」ではない?
    • good
    • 0
この回答へのお礼

お忙しい中、わざわざありがとうございます。
文字数が制限され詳しく書けません、、
シート名は、確かに変えています。ツリーにはSheet1(変更名)となっているので
そのままでいいのかと思い該当のSheet番号を表記しています。
あと行位置の番号変更も、I行なので9 C行なので3に変更しました。

よろしくお願いします。

お礼日時:2017/03/02 18:56

横から失礼します。


データ量にもよるのですが、ループ処理で検索するより、Findメソッドで検索した方が、安定したパフォーマンスが得られると思います。
こんな感じです。

ちなみに、標準モジュールは最初からあるものではなく、「挿入」メニューから「標準モジュール」で作成する必要があります。

以下、Findメソッドでの実装例です。Sheet1のBeforeDoubleClickベントプロシジャに記述してください。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Intersect(Target, Columns("A")) Is Nothing Then Exit Sub
Cancel = True
If Target.Value = "" Then Exit Sub
On Error Resume Next
Application.Goto Reference:=Sheets("Sheet2") _
.Columns("A").Find(Target.Text, LookIn:=xlValues, LookAt:=xlWhole)
End Sub
    • good
    • 0
この回答へのお礼

ありがとうございます。
正直、意味がわからないのですが
トライしてみます!

お礼日時:2017/02/27 07:41

補足コメントについて



大変申し訳ございません。
下図のように「挿入」「標準モジュール」で作成できます。
「エクセルについて教えて下さい!」の回答画像5
    • good
    • 0
この回答へのお礼

申し訳ないなど、とんでもないです。
早速やってみます。ありがとうございます。

お礼日時:2017/02/27 07:38

No.3 の補足



「Sheet1」の日付の列がA列でない場合は次の2行の「1」(同じものが有るので合計4箇所)を適当に変更して下さい。
「If Target.Column <> 1 Then Exit Sub」
「With Cells(行, 1)」

「Sheet2」の日付の列がA列でない場合は次の2行の「1」(合計3箇所)を適当に変更して下さい。
「For 行 = 1 To Cells(Rows.Count, 1).End(xlUp).Row」
「With Cells(行, 1)」

※ 雰囲気で判ると思いますが、B列なら「2」C列なら「3」…となります。
    • good
    • 0

☆ 標準モジュールへ


-------------------------------------------------------------------------------
Sub 日付選択(日付 As Date)
Dim 行 As Long
Dim 有 As Boolean
Sheets("Sheet2").Select
For 行 = 1 To Cells(Rows.Count, 1).End(xlUp).Row
With Cells(行, 1)
If .Value = 日付 Then
.Select
有 = True
Exit For
End If
End With
Next
If 有 = False Then
Sheets("Sheet1").Select
MsgBox ("対象が見つかりませんでした")
End If
End Sub
-------------------------------------------------------------------------------

☆ Sheet1 のシートモジュールへ
-------------------------------------------------------------------------------
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column <> 1 Then Exit Sub
If Target.Row > Cells(Rows.Count, 1).End(xlUp).Row Then Exit Sub
Cancel = True
If IsDate(Target.Value) = False Then
MsgBox ("日付を指定して下さい")
Exit Sub
End If
Call 日付選択(Target.Value)
End Sub

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column <> 1 Then Exit Sub
If Target.Row > Cells(Rows.Count, 1).End(xlUp).Row Then Exit Sub
Cancel = True
If IsDate(Target.Value) = False Then
MsgBox ("日付を指定して下さい")
Exit Sub
End If
Call 日付選択(Target.Value)
End Sub
-------------------------------------------------------------------------------
※ シートモジュールにコードを記入するときは下図の赤枠で囲んだ部分をクリックして開いた所に記入して下さい。
※「Private Sub Worksheet_BeforeDoubleClick …」~「End Sub」がダブルクリックで反応させるためのコードです。
※「Private Sub Worksheet_BeforeRightClick …」~「End Sub」が右クリックで反応させるためのコードです。
「エクセルについて教えて下さい!」の回答画像3
この回答への補足あり
    • good
    • 0
この回答へのお礼

すごい、、、
本当に時間を割いていただきありがとうございます。
今からやってみます。
また報告させていただきます。

お礼日時:2017/02/26 22:54

「セルに入っている日付はシリアル値でしょうか?」ですが、書式設定とはあまり関係ありません。

たとえば「1月1日」と入力されているセルを選択したときに数値バーに「2017/1/1」と表示されればシリアル値です。
この回答への補足あり
    • good
    • 0

マクロ(VBA)ならば可能です。

以下回答いただけますか?
・ セルに入っている日付はシリアル値でしょうか?
・「クリックすれば」とは、左シングルクリックでしょうか?左ダブルクリックや右シングルクリックではダメでしょうか?(左シングルクリックのイベントが無い為)
・「SHEET1」の入力後にセルを移動する方向はどちらでしょうか?
・ シートイベントへのコードの記入方法は判りますか?
この回答への補足あり
    • good
    • 0
この回答へのお礼

早速のコンタクト感謝しかありません。
ありがとうございます!
使っているエクセルはエクセル2016MSO16.0.7571.7095です。
無理でしょうか?

お礼日時:2017/02/26 21:32

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