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

https://oshiete.goo.ne.jp/qa/9671375.html
前回の引き続きです。
よろしくお願いします。

ボタンマクロの名前です。
xlsb'!ボタン2_Click でした。

前回は質問の補足が不足してしまい焦ってしまって、一気に沢山質問してしまい…
混乱してしまいました。1個づつ落ち着いて取り組んでいこうと思います。
よろしくお願いします。
増え続けていくデータの領域指定について、ご教授お願いします。
名前の定義の範囲指定について
シート名は 管理表 です。
AからZ列まであって、
行については増え続けていきます。増えていく行を確認するのは、A列です。
項目名の記載のあるのは、A6です。
データを入力するのは、A7から取りあえず、Z7までにしたいです。
データはこれから増え続ける予定です。

補足として、画像を別添しました。

「エクセルVBA 一つ上の行を指定した回数」の質問画像

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

  • よく考えたら、この質問には名前の定義は不要なんですよね。
    すみませんでした。
    これが解決したら、名前の定義について、ゆっくり考えて行きたいと思います。

      補足日時:2017/03/17 17:28
  • 前回のスレッドの質問で、オートフィルターの検索マクロを教えていただいていたのを思い出しました。
    コピペで、ワークシート名を入れたのですが、エラーになってしまいました。
    ご教授お願いします。

    「エクセルVBA 一つ上の行を指定した回数」の補足画像2
      補足日時:2017/03/17 17:46
  • >次に表示されているVBE画面の左側に「Sheet1(管理表)」と表示されていると思いますので
    そこをダブルクリック → 表示されたVBE画面のカーソルが点滅しているところに
    ↓のコードをコピー&ペースト

    この部分、見つけました。
    ありがとうございました。
    実行したところ、データが全て消えてしまいました。
    私の貼り付けがまずかったのでしょうか?

    「エクセルVBA 一つ上の行を指定した回数」の補足画像3
    No.4の回答に寄せられた補足コメントです。 補足日時:2017/03/17 20:47
  • 助けてください(汗)
    Qの列のコピーや削除をしたら、エクセルが応答無くなってしまって、困っています。
    3/16のスレッドに戻って、何度もトライしているのですが、結果は同じで。
    せっかく上手くモジュールが作動して、喜んでいたのに・・・
    どうしたらよいのでしょうか?
    とても困っています。

    「エクセルVBA 一つ上の行を指定した回数」の補足画像4
      補足日時:2017/03/17 23:27
  • 一行づつ茶色に反転させて試してみました。
    添付の通り、一行目から黄色くなってしまいました。

    「エクセルVBA 一つ上の行を指定した回数」の補足画像5
      補足日時:2017/03/18 00:34
  • 全部反転して試しました。
    画像添付します。

    「エクセルVBA 一つ上の行を指定した回数」の補足画像6
      補足日時:2017/03/18 00:40

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

まずさあ、


sub ほにゃらか()      ’ほにゃらかはあなたがつけたいSub名を自由に
ここに記述しないと!!
End sub

どうやって今まで試してたの?


Worksheets("Sheet1”)に変えてもいいって書きましたよね。
Worksheets("管理表”). て、なってないんじゃない?

それとあくまでもそれは入れ物で中身はまだ書いてないからね。
絞り込んでるかいないかをそうやって判断できるから
それぞれの場合でかき分けたらいいかなというもの。
    • good
    • 0
この回答へのお礼

いつもありがとうございます。
今日は過去のスレッドを再確認しながら、オートフィルター部分を再勉強してます。
わからない事ばかりで、何度も質問してしまって、申し訳ない気持ちでいっぱいです。
ついていけるように頑張りますので、またご教授お願いします。

お礼日時:2017/03/17 22:30

布団の中で携帯で打ってます、明日明後日は休みなので、うだうだしてました。


ステップ実行についても併せてググるといいですよ。
また、明日。
    • good
    • 0
この回答へのお礼

おやすみなさい。
今日も一日お世話になり、ありがとうございました。
お疲れ様でした。

お礼日時:2017/03/18 01:57

おと、目で追うのは意味をかんがえながらね。


たとえば、反応するのは、g列とq列だっけ?
その他の列の場合と進み方が異なる筈だから、それを確認しながら追うって事です。
    • good
    • 0

あせる気持ちはわかりますけど、掛り切りになれる訳てもないし、無意味な画像アップしても始まりません。


逆にブレークポイントをググればその使い方とか、載ってますから、試すとか、あてなく進むのは休んでるのと同等ですよ。
    • good
    • 0
この回答へのお礼

ありがとうございました。
夜も遅いので、yokomayaさまに申し訳なくって…
平日は事務の仕事をしていて、夜しか勉強が出来なくて。

今、ブレークポイントの使い方をググってました。

お礼日時:2017/03/18 01:41

黄色はそこで停止してます。


つまり無反応ではありません。
ステップ実行はf8キーです。
どう進んで行って終わるかを
f8キーを押して、目で追ってみてくれませんか?
    • good
    • 1
この回答へのお礼

おはようございます。
お休み中、大変恐れ入ります。
昨日のトラブルの報告をさせてください。
デバック実行しても弾くような電子音がして、実行不可でしたが、新規ブックにコピーで無事稼働しました。
心より感謝しています。
取り急ぎお礼を申し上げます。

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

最後の画像のコードに関しては、判らないのですが・・・



チェンジイベントで一度エラーが出た場合、その後無反応になることがあります。
ダメ元で次のコトをしてみてください。

新しくExcelを立ち上げる → 元のシートをコピー → まっさらなExcelに貼り付け
(データがあるシートが複数ある場合はシートの数だけコピー&ペースト)

マクロがある場合はマクロのコードをコピー → そのままVBE画面に貼り付け!

※ ブック全体をコピーしないでください。

これでマクロが復活するコトがあります。m(_ _)m
    • good
    • 0
この回答へのお礼

ありがとうございました。
早速新しいエクセルにシートを一つずつコピペして、プライベートモジュールもコピーぺ。標準モジュールもコピペしました。
一番最初に教えていただいた回数指定の列のコピーは無事に動きました。
やはり、2回目に教えていただいたQ列のセルのどれかに該当する番号の(A7以降)コピーどころか、セルの操作をすると応答が無くなってしまいます。
どうしたらよいでしょうか?

お礼日時:2017/03/18 01:15

>エクセルが応答無くなってしまって


これが全くの無反応なら、まず試してほしいのは
添付の様に
IF Target. で始まる行の横に丸が
有るところをクリックすると
丸がついて行の色が変わります。
これをブレークポインタをセットするといいます。

これで管理表に何か入力したらここで
実行が停止します。
ここで止まるなら無反応ではありません

そうならず無反応ならイミディエイトウィンドウに
Application.EnableEvents=True
とすれば回復するかと。
「エクセルVBA 一つ上の行を指定した回数」の回答画像11
    • good
    • 0
この回答へのお礼

対応ありがとうございます。夜分にすみません。
早速やりましたが、
if target.の一行目から黄色くなっていました。
補足添付します。

お礼日時:2017/03/18 00:32

この質問最初の画面が変だなぁ。


どうしてこうなったのかな?

僕は前のスレッドの最後の補足の画面で処理することを
考えてました。K17:L18に入力したので絞るから
そのシートのコマンドボタンで起動。
勿論オートフィルターは管理表シートですが、
そこは手で操作するわけじゃないと。
表示するのも入力した画面だしね。

それがフィルターの詳細設定なら、管理表シートはデータ置き場
というだけで、名前定義さえ済んでたら、その名前しか使わない
考えでした。
    • good
    • 0
この回答へのお礼

前のシートと違う理由は、質問用で並行して勉強して行こうと思い、新たなブックにコピーして、用語を触ったりして、教えて頂いて成功したのを原本に貼り付けていました。

どころが…私の勉強不足から、3月16日16時に頂いたいた、A列のセルの中身が…例えば、A列に123という数字が5行あったら、A列に123と入力された行にQ列で指定した数字をコピーするという大切なプログラムを教えて頂いたのに…
Q列に数字を入れたり、消したりしたら、エクセルが応答無しになってしまうトラブルが発生してしまいました。
とても大事なプログラムです。
助けてください。お願いします。
本当にごめんなさい。自分で何とかしようと頑張ったんですが…難しくて、手に負えませんでした。
助けてください。
よろしくお願いします。

お礼日時:2017/03/18 00:11

ちょっと整理しておきますね。



それと僕の話とtomo04さんの話は一緒くたにすると意味不明になるから
ブックは別名でお願いします。

>前回のスレッドの質問で、オートフィルターの検索マクロを

この話しの流れは表示的には管理表でオートフィルターをかけるのと
ほぼ同じデータだと。
ただ表示するのは別のシートのK17:L18で指定したもので
管理表をフィルタリングしたデータを、その別シートに
という話でしたよね。

だからオートフィルターで絞り込んだのを、もう一つのシートに
貼り付ける想定で話しかけてました。
補足の②がその時のことです。
オートフィルターで操作するときに事前に絞り込み状態を知って
処理するのが妥当と考えたのです。

その流れの中で、フィルターの詳細設定に、ちょっと横道それましたが
(というか、そっちが本筋で良かったんじゃないかと思うけど、)
補足②でオートフィルターに戻す話を言われたので・・・
動かすこと自体はどっちでも出来ますよ。

ただ、No1に書いた通りですが、管理表のA1:A5は名前定義に
あたって使わない前提ですから、お忘れなく。
    • good
    • 0
この回答へのお礼

いつも大変お世話になっております。
3/16に教えていただいて、ちゃんと動いていたはずの列Qのセルの内、一つに任意数字を入力したら、A1の重複しているすべての番号にコピーされるというマクロを実行したら、エクセルが応答無くなってしまうようになってしまいました。
成功していた分をコピペで何度もリトライしてもダメでした。

助けてください。
取り急ぎ補足説明に画像を添付します。

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

それでは最後にコードにコメントを記載しておきます。



まず↓の画像の左側「管理表」シートのシートモジュールに↓のコードをコピー&ペースト

Private Sub Worksheet_Change(ByVal Target As Range)
If Target <> "" And Target.Address = "$A$1" Then
Call Sample1
End If
End Sub

次に標準モジュールに↓のコードをコピー&ペースト

Sub Sample1() 'この行から//
Dim lastRow As Long, lastCol As Long, wS As Worksheet
'//「貼り付け用」シートを「wS」という変数に格納//
Set wS = Worksheets("貼り付け用")
'//「管理表」シートの・・・//
With Worksheets("管理表")
'//最終行を取得//
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
'//6行目で最終列を取得//
lastCol = .Cells(6, Columns.Count).End(xlToLeft).Column
'//「貼り付け用」シートのデータを一旦消去//
wS.Cells.Clear
'//「管理表」シートのA列をA1セルのデータをキーとしてフィルタを掛ける//
.Range("A6").AutoFilter field:=1, Criteria1:=.Range("A1")
'//A1セルのデータがあれば表示されているデータを「貼り付け用」シートのA1に貼り付け//
'//(データがない場合は項目行だけの表示になるので「>6」としている)//
If .Cells(Rows.Count, "A").End(xlUp).Row > 6 Then
Range(.Cells(6, "A"), .Cells(lastRow, lastCol)).SpecialCells(xlCellTypeVisible).Copy wS.Range("A1")
'//オートフィルタを解除//
.AutoFilterMode = False
Else
'//A1セルのデータがない場合、メッセージボックスを表示//
.AutoFilterMode = False
MsgBox "該当データなし"
End If
End With
End Sub 'この行まで//

これで「管理表」シートのA1セルにデータを入力してみてください。

※ こちらで上記のコードでは↓の画像のような感じになります。m(_ _)m
「エクセルVBA 一つ上の行を指定した回数」の回答画像8
    • good
    • 0
この回答へのお礼

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

お礼日時:2017/03/17 23:33

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