Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
  • ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル2007のVBAについて)

エクセル2007のVBAについて

このQ&Aのポイント
  • エクセル2007のVBAについて初心者向けの質問です。
  • エクセルで入力したいシートタブを右クリックしてコードの表示でVBAスクリプトを入力しました。
  • U列に値が入っていれば、その行のT列をダブルクリックするとチェックマークがつくようにしたいのですが、うまくいきません。

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

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

間違い: If Range("U" & i) <> Null Then 正解: If Range("U" & i) <> "" Then Nullとの演算結果はTrueにもFalseにもならないからです。

daicedec
質問者

お礼

お早いご回答ありがとうございます。説明も簡潔で分かりやすかったです。

すると、全ての回答が全文表示されます。

その他の回答 (3)

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

まぁ,今のマクロでも先に回答した箇所以外特段間違いは無いので構わないと思いますし,あくまで余計なお世話ですが,もしご質問が間違いの直し以上にマクロ全体をもうちょっとどうにかしたいという事だったのなら,ワタシならこんなカンジにします private sub worksheet_beforedoubleclick(byval Target as excel.range, cancel as boolean)  if application.intersect(target, range("T:T")) is nothing then exit sub  cancel = true  if range("U" & target.row) ="" then exit sub  if target <> chrw(10003) then   target = chrW(10003)  else   target.clearcontents  end if end sub

daicedec
質問者

お礼

ご回答ありがとうございます、参考にいたします。

すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.3

>それをU列の最終行までループしたいのですが、 なぜこうする必要があるのか。 ダブルクリックをイベントとして扱うということは、普通はそのダブルクリックしたセルの情況で、何かをする場合は多く、全セルや全行などに繰返すというのは意味が判らない無い。 (1)標準モジュールの実行をダブルクリックで行うだけの仕組み (2)ダブルクリックしたセル(Targetセル)を基にして、その行やその列のデータや結果を出すセルに指定するなど がありえる。(1)はわざわざダブルクリックのイベントを使う必要は無い。 ーー そもそも コードを挙げて、誤りを正せと言う前に、文章で、どういうときに、何がしたいのか明確に説明すること。 その際シート形式のデータ情況ぐらい模擬実例で挙げること。 ーー Targetセルにチェックを入れるかどうかは、同行のU列に、データが入っているかどうかだけでしょう。 どうして最上のデータ行から最終行まで処理を繰返すのか。 普通は、最上のデータ行から最終行まで処理を繰返すのは標準モジュールに質問類似のコードを入れて、実行を指示し、条件に合うかどうか各行でチェックして、条件に合えばチェックを入れるを行うのが多い。 イベントと標準モジュールの区別が付いてないのでは。 ーー わたしが普通の処理に毒されていて、この質問の意図を見抜けないのかとも思うが。 初心者ではアイデアそのものが奇想天外の場合がある(その仕組みを使う場合でない場合がある)ので。 ーー そのほか Step 1は普通略す Range("A" & i) <> "" Then Intersect(Target, Range("B" & i)) Is Nothing Then 参考 http://officetanaka.net/excel/vba/tips/tips118.htm など気になる。 エクセルVBAの初心者ではNullは使わないだろう。但しアクセスでは重要。 参考 http://officetanaka.net/excel/vba/function/IsNull.htm http://home.att.ne.jp/zeta/gen/excel/c04p16.htm ーーーー ダブルクリックしたセルにチェックが入って、そのセルの元のデータは見えなくなるが良いのか 現在チェックが入っておれば、チェックをはずしているがこれで良いのか。

daicedec
質問者

お礼

ご回答ありがとうございます、参考にします。

すると、全ての回答が全文表示されます。
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

既に回答済みですので参考です。 U列のループ処理は不要ではないでしょうか。 T列の任意のセルをダブルクリックでT列全体にマーキングする事が前提ならば、 このコードでは期待通りに動作しませんのでご検討下さい。 しかし、ダブルクリックセルのみマーキングならば、以下のサンプルは如何でしょうか。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Intersect(Target, Range("T:T")) Is Nothing Then Exit Sub Cancel = True If Target.Offset(0, 1).Value <> "" Then If Target.Value = ChrW(10003) Then Target.ClearContents Else Target.Value = ChrW(10003) End If End If End Sub

daicedec
質問者

お礼

ご回答ありがとうございます、参考にします。

すると、全ての回答が全文表示されます。

関連するQ&A