• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBA の変数を使うべきでしょうか?)

エクセルVBA の変数を使うべきでしょうか?

このQ&Aのポイント
  • エクセルVBAの変数の使用方法について、質問を投稿しています。
  • 質問内容は、特定の条件に基づいてデータを入力する処理を作成する際に、列や行の規則性を活用するために変数を使用したいというものです。
  • また、空白の問題についても質問しており、問題の解決策を求めています。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

わかりやすく答えだけ教えてもらえればよいですね? まぁでも,変数は使わなくても書けますが,変数を使った方がもっとわかりやすくなります。 手順: 今のマクロをきれいに全部消す 改めて下記をコピー貼り付ける private sub Worksheet_BeforeDoubleClick(byval Target as excel.range, cancel as boolean)  dim r as long  if target.column <> 2 then exit sub  cancel =true  r = worksheets("Sheet1").range("B65536").end(xlup).offset(1).row  worksheets("Sheet1").cells(r, "B").value = iif(target="","'",target.value)  worksheets("Sheet1").cells(r, "H").value = cells(target.row, "B").value  worksheets("Sheet1").cells(r, "K").value = cells(target.row, "C").value  worksheets("Sheet1").cells(r, "M").value = cells(target.row, "D").value 'worksheets("Sheet1").select end sub >空白があった場合 どういう結果を残したいかに応じて,工夫代はいろいろ考えられます。 上記なんかは割と安直な解決策をとっていますが,ほかにも「変数rに取得すべきシート1の最後の行+1」をまじめに手抜きせず対象列すべてを丁寧に調べて,その一番大きい値(行)に決めるといった手も取れますね。 あるいはシート1の具体的な内容によっては,「シート1の最後のセルの行+1」とかで取得する手も使えるかもしれません。 #参考 エクセルの「シートの最後のセル」とは,ワークシート上でCtrl+Endキーを押してジャンプする操作のことをいいます。 「新しいマクロの記録」で記録マクロをとって,この操作がマクロではどういう記述になるかしっかり勉強してください。

dontakos11
質問者

お礼

ここまで丁寧に教えて頂けるとは思っていませんでした。 ご親切に感謝致します。 教えて頂いたコードであっさり問題が解決しました。 「シートの最後のセル」の解説もありがとうございます。 似たような処理をする必要がこれからも出てきそうなので、教えて頂いたコードを理解できるよう勉強します。 いつかは私も教えてあげられる側になりたいと思います。 本当にありがとうございました。

その他の回答 (1)

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

うわ~ 行の数だけ、コードを準備するつもりだったのでしょうか。 If Target.Column = 2 Then Worksheets("sheet1").Range("B" & Rows.Count).End(xlUp).Offset(1).Value = Target.Value Worksheets("sheet1").Range("H" & Rows.Count).End(xlUp).Offset(1).Value = Worksheets("sheet5").Range("B" & Target.Row) ・・・ で考え直してみてください

dontakos11
質問者

お礼

はい、行の数だけコードを準備するつもりでした。 といいますか、行の数だけコードを書いたらエラーがでました。 非常にアホなやり方なんだろうとは思っていたのですが、今の自分のレベルではそれが精一杯でして・・ 親切に教えていただいて本当に助かりました。感謝致します。 同じ処理でも色んな方法があるんだなと勉強になりました。 ありがとうございました。

関連するQ&A