エクセルで簡単な計算書を作成しています。(マクロ初心者)
ちなみにこのコードは自分で作成したものではなく、人から聞いていじってみました。

Private Sub Worksheet_Change(ByVal Target As Range)
'一度に複数セルの値が変更された場合は終了
'(A5:C5を選択しDeleteも含みます。)
If Target.Count > 1 Then Exit Sub
If Intersect(Target, Me.Range("H170:K170", "H171:K171","C76")) Is Nothing Then Exit Sub

Application.EnableEvents = False
'数値かつ空白以外の場合
If IsNumeric(Target.Value) And Target.Value <> "" Then
Me.Range("M170").Formula = "=if(iserror(H170*I170*J170*K170),""-"",H170*I170*J170*K170)"
'空白の場合
ElseIf Target.Value = "" Then
Me.Range("H170:K170,M170").Value = "-"
End If
Application.EnableEvents = True


Application.EnableEvents = False
'数値かつ空白以外の場合
If IsNumeric(Target.Value) And Target.Value <> "" Then
Me.Range("M171").Formula = "=if(iserror(H171*I171*J171*K171),""-"",H171*I171*J171*K171)"
'空白の場合
ElseIf Target.Value = "" Then
Me.Range("H171:K171,M171").Value = "-"
End If
Application.EnableEvents = True


Application.EnableEvents = False
'空白の場合
If Target.Value = "" Then
Me.Range("D76:K76","C76").Value = "-"
End If
Application.EnableEvents = True

End Sub

H170、I170、J170、K170のどれかに数値の入力があった場合、M170に計算式を入力。
H170、I170、J170、K170のどれかの値をDELETEキーでクリアした場合、H170、I170、J170、K170、M170に"-"を入力。

その他に似たような処理がたくさん出てくるので、H171の処理とC76をDELETEキーでクリアした場合の処理を自分で考えて作ってみたのですが、うまく実行されません。H171~の処理はうまくいったので単純にコードをどんどん追加していけば動くと思ったんですが、いろいろ調べてもどうも方法がわからず進みません・・・
解決してもらえるでしょうか・・

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

A 回答 (2件)

こんにちは。



私としては、#1の補足の内容は、あまり理解できていません。

>C76をDeleteした場合、D76:K76, C76に"-"を入力し、値が入力された場合はなにもしないというような処理をしたいです。
Me.Range("D76:K76", "C76").Value = "-" というのは、   Range("C76:K76").Value = " -" という意味だと思います。

>If Intersect(Target, Me.Range("H170:K170", "H171:K171","C76"))
これ自体も、そのままで理解したら、
If Intersect(Target, Range("C79::K171"))
ということだと思います。しかし、どうも違うような気がします。
本来は、ここら辺自体も説明が必要なのです。

もし、エリアが複数に分かれるなら、Range("H170:K170, H171:K171 ,C76") ということです。
もう、ここらは基本的なことですから、あまり細々教えることでもないとは思いますが。

私は、掲示板では、依頼に応じて、何度も作り直すということは、私はしていないのですが、これを見れば分かっていただけると思います。

--------------------------------------------

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim i As Long
  Dim j As Long
  If Target.Count > 1 Then Exit Sub
  
  If Intersect(Target, Range("H170:K180, C76")) Is Nothing Then Exit Sub
  i = Target.Row: j = Target.Column '行と列数を取得
  Application.EnableEvents = False
  
  If IsNumeric(Target.Value) And Target.Value <> "" And j > 7 Then
    Cells(i, 13).FormulaLocal = _
    "=IF(ISERROR(RC[-5]*RC[-4]*RC[-3]*RC[-2]),"" -"",RC[-5]*RC[-4]*RC[-3]*RC[-2])"
    '空白の場合
  ElseIf Target.Value = "" And j > 7 Then
    Cells(i, 8).Resize(, 4).Value = " -" 'H:K
    Cells(i, 13).Value = " -" 'M
  ElseIf Target.Value = "" And j < 8 Then
    Range("C76:K76").Value = " -"
  End If
  Application.EnableEvents = True
  
End Sub
  

>これを実行すると、"引数の数が一致していません。または不正なプロパティを指定しています。

理由は分かりませんが、別のシートでも、新しいブックでもよいので、貼り付けて試してみてください。
    • good
    • 0
この回答へのお礼

ありがとうございます。
思ったとおりに動作しています。

基本が理解できていないまま質問してすみませんでした。
この文も調べて理解を深めようと思います。
色々とありがとうございました!

お礼日時:2009/05/14 17:29

こんにちは。



マクロの修正自体は、
If Intersect(Target, Me.Range("H170:K170", "H171:K171","C76")) Is Nothing Then Exit Sub
    ↓
If Intersect(Target, Range("H170:K170,H171:K171, C76")) Is Nothing Then Exit Sub

後は、内容が確認できない部分があるので、書けません。(Me キーワードは、シート間をまたぐことはないので、特に必要はないです)

>'(A5:C5を選択しDeleteも含みます。)

>Range("D76:K76, C76").Value = " - "

この部分が良く分かりません。C76 に数値を入力したら、D76;K76 までを、どうするのでしょうか。

それと、ひとつのセルに Delete を行うと「-」が全部に入ってしまうのは、ちょっと過激なような気がします。数式で既にエラー処理されているのですから、数式まで削除して、「-」を入れてしまうのでしょうか?

この回答への補足

>'(A5:C5を選択しDeleteも含みます。)
すみません無視してください。

>Range("D76:K76, C76").Value = " - "
>この部分が良く分かりません。C76 に数値を入力したら、D76;K76 までを、どうするのでしょうか。

C76をDeleteした場合、D76:K76, C76に"-"を入力し、値が入力された場合はなにもしないというような処理をしたいです。

>それと、ひとつのセルに Delete を行うと「-」が全部に入ってしまうのは、ちょっと過激なような気がします。数式で既にエラー処理されているのですから、数式まで削除して、「-」を入れてしまうのでしょうか?

数式が入力されているセルに直接数値を入力する場合もあり、数式が入っている上から直接値を入力するのはあまりしたくないんです。(数式がマクロで挿入されるので問題は無いんですが、見た目上として)

複数の人間が使う事を想定してまして、直接値を入力できるセルには"-"がデフォで入力してあるのが理想なんです。

さらにすみませんが補足です。
これを実行すると、"引数の数が一致していません。または不正なプロパティを指定しています。"とでて、If Intersect(Target,Range ←ここのRangeが反転します。

これって引数は2つまでしか指定できないってことですよね?
changeイベントを複数回実行できるように組まないといけないってことはわかって試行錯誤しているんですがどうもうまくいきません・・・

補足日時:2009/05/14 13:55
    • good
    • 0

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

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

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

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

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

QDHCPに関するイベントログの意味が不明です

【ネットワークセキュリティ 】というぱっとしないカテゴリですが、ここが一番近いので、これで質問します。

特に支障があるわけではないのですが、イベントログにあがるDHCPのメッセージについて意味がわからず、気持ち悪い思いをしています。20年にわたり汎用機の適用業務の三流SEだったのにもかかわらず恥ずかしい限りです。

次のようなシステム環境です。
(1)Window XP SP2 のPC2台
(2)ネットワーク:FTTHでブロードバンドルータを使い、1台は有線、もう一台は無線で接続しています。
(3)ウィルスバスター2007で、プロファイルは「家庭内ネットワーク2」のデフォルト設定です
(3)ブロードバンドルータでの、DHCPのリース期間は48時間です。
(4)毎朝、2台のPCを立ち上げ使用し夜にはシャットダウンしています。
(5)ネットワーク接続時、1台は 192.168.11.2 もう一台は 192.168.11.3 が割り当てられ、ルータ自身は 192.168.11.1です。
どちらから立ち上げても、同じIPアドレスが割り当てられます。

そして、このような環境と運用のなかで、2台とも、次に示すイベントログがあがります。ネットワークカードのアドレスは伏字にしています。

■エラー ソースDHCP イベントID 1002
ネットワーク アドレスが 00XXXXXXXXXX のネットワーク カードに対する IP アドレス 192.168.11.2 のリースが、DHCP サーバー 192.168.11.1 から拒否されました。DHCP サーバーは DHCPNACK メッセージを送信しました。

■警告  ソースDHCP イベントID 1003
ネットワーク アドレスが 00XXXXXXXXXX のネットワーク カードに対して、ネットワーク (DHCP サーバー) から割り当てられたアドレスを書き換えることができませんでした。 次のエラーが発生しました:
セマフォがタイムアウトしました。 ネットワーク アドレス (DHCP) サーバーから引き続き、アドレスの取得を 試みます。

立ち上げる日によって、どちらかがログに書かれます。

また、警告の「セマフォがタイムアウトしました」は有線接続の方、無線接続は「この操作はユーザーによって取り消されました」と出ます。

ログのほうからmicrosoftのほうにアクセスしても、英語力に乏しい私は手に負えず、技術情報にキーワードでアクセスしても、現象とマッチしたものには出会えません。

ネットワークにお詳しい方、よろしくお願いします。

【ネットワークセキュリティ 】というぱっとしないカテゴリですが、ここが一番近いので、これで質問します。

特に支障があるわけではないのですが、イベントログにあがるDHCPのメッセージについて意味がわからず、気持ち悪い思いをしています。20年にわたり汎用機の適用業務の三流SEだったのにもかかわらず恥ずかしい限りです。

次のようなシステム環境です。
(1)Window XP SP2 のPC2台
(2)ネットワーク:FTTHでブロードバンドルータを使い、1台は有線、もう一台は無線で接続しています。
(3)ウィ...続きを読む

Aベストアンサー

DHCPの動作は通常,

立ち上げたPCは以前割り当てられたIPアドレスを割り当ててほしいとDHCPサーバに問い合わせます。そのIPアドレスが割り当てられないとDHCPサーバが判断すると1番目のメッセージがでます。

2番目はDHCPサーバが割り当てたIPアドレスにPCのネットワークカードが変更されなかった結果です。

DHCPサーバーは通常は同じMACアドレスには特別な事情(IPが足りずに他に使われているなど)が無い限り同じIPを割り当てる動作をします。

上記のエラーがでても最終的にはちゃんと接続できているようなので,最初のDHCPとPCとのネゴシエーションに失敗してこのログが残っているのだとおもいますので,気にしなくて良いと思います。

Qエクセルvba  (ByVal Target As Range)について

シートのイベントプロシージャーが
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

End Sub
となりますが
(ByVal Target As Range)部分は何なのでしょうか?
何のためにあるのかわかりません。

Private Sub Worksheet_SelectionChange()
End Sub
としたらエラーが返ってきました。

理由を教えてください。
よろしくお願いします。

Aベストアンサー

こんにちは
>Target=ActiveCell
>と言う認識でよろしいでしょうか?
#5でKenKen_SPさんが説明されていますが、補足です。

セルを一つだけ選択したときには、

Target=ActiveCell
と考えても問題ありません

しかし、複数の範囲を選択したときは、
Target=ActiveCell
はなりません。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
では
Target=Selection
です。

注!
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
では
Target=Selection
成り立っていますが、そうでない場合もあります。
Selectionは「選択されている物」という意味です。
そのために、場合によって内容が異なります。
例えば、オートシェイプが選択されているときには、Selectionは選択されているオートシェイプになります。


以下のコードを試してみてください。
上段にTargetのアドレス
中段にActiveCellのアドレス
下段にSelectionのアドレス
が表示されます。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
MsgBox Target.Address & Chr(13) & ActiveCell.Address & Chr(13) & Selection.Address
End Sub

こんにちは
>Target=ActiveCell
>と言う認識でよろしいでしょうか?
#5でKenKen_SPさんが説明されていますが、補足です。

セルを一つだけ選択したときには、

Target=ActiveCell
と考えても問題ありません

しかし、複数の範囲を選択したときは、
Target=ActiveCell
はなりません。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
では
Target=Selection
です。

注!
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
では
Target=Selection
成り立...続きを読む

Q写真集発売イベントでの特典の意味が解りません???

某書店で行われる写真集発売記念イベントについて。

2冊購入すると「ツーショットチェキ1枚」、3冊購入すると「ミニ撮影会」と書店のHPに記載されてました。

ツーショットチェキとは、タレントと客と二人並んで、係員に撮影してもらうんでしょうか? チェキって何ですか??

ミニ撮影会とは、ツーショット撮影ではなく、タレントさんだけをカメラ持参で撮影するのでしょうか? 

Aベストアンサー

「 チェキ 」は富士フイルムが発売しているインスタント
カメラのことで、その場ですぐに写真が見れるポラロイド
のようなものです。いわゆるポラロイドよりサイズが小さ
いので現場で扱いやすいことと、バンバン撮るのに適して
いるので、発売記念イベントの現場ではよく使われています。

 ですので、ツーショットチェキに関してはご想像の通りです。

 ミニ撮影会についてもご想像の通りです。たいていは
イベント終了後、参加者が別室に移動し、そこで10分
程度自由に撮影することができます。基本的にムービー
は禁止で、ポーズもあまり自由にお願いできなかったり
しますが、目線くらいはくれるのでファンには好評です。

参考URL:http://www.fujifilm.co.jp/instant/index.html

Q標準モジュールで 『Sub test(ByVal Target As Range)』は動かない?

選択されている複数のアドレスが知りたいので
標準モジュールに
Sub test(ByVal Target As Range)
Debug.Print Target.Address
End Sub
と書きました。

しかしF5ボタンを押しても何も起こりません。
デバッグ→コンパイルをしてもエラーになりません。

シートのイベントプロシージャーではなく
標準モジュールにした理由は
イベント発生時ではなく、任意で起動させたいためです。

ためしに、
Sub test(ByVal Target As Range)
Debug.Print Target.Address
End Sub
の下に、

Sub test2()
Call test
End Sub

と書いたら、
「引数は省略できません。」
というエラーになりました。

何がダメなのかわかりません。
ご教授よろしくお願い致します。

Aベストアンサー

こんばんは。

今回は、初歩的なことですが、段階を経たほうがよいと思います。つまみ食いのようなことをしても、なかなか、VBAもWSHも覚えられないと思います。しかし、今回のように単発では、こちらの書いていることはほとんど分かってもらえないと思います。

今回は、サブルーチンのコードですが、サブルーチンを書くということは、それなりに、その前段階を理解していなくてはなりません。イベント・ドリブン型とは関係がありません。

それと、Target は、予約語ではありませんが、イベント・ドリブン型の引数に使われているものですから、他の語を使ったほうがよいです。それを許していると、自分ですらコードが読めなくなっていくはずです。

今回のようなコードを実際に書くことはありえませんが、ByVal キーワードは、入れるのと入れないのでは違いがありますが、Test1 側で、引数のデータ型が決めてあれば、入れなくても構わないです。Debug.Print としてしまったら、さっぱり、その意味が見えないでしょうけれども……。

F5を押しても、サブルーチンは呼び出さないと動きません。
それに、呼び出す場合は、引数を入れなければなりません。

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

Sub Test1()
Dim c As Range  '←これがあるので、ByVal は不要
For Each c In Range("A1:A10")
 Call Test2(c)
Next c
End Sub

'サブルーチン(Target という名称は使わない)
Sub Test2(rng As Range)
  Debug.Print rng.Address
  'Debug.Print では、良く意味が分からないはずです。
  'Range オブジェクトを引数にしたら、いろんな使い方がある
End Sub

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

こんばんは。

今回は、初歩的なことですが、段階を経たほうがよいと思います。つまみ食いのようなことをしても、なかなか、VBAもWSHも覚えられないと思います。しかし、今回のように単発では、こちらの書いていることはほとんど分かってもらえないと思います。

今回は、サブルーチンのコードですが、サブルーチンを書くということは、それなりに、その前段階を理解していなくてはなりません。イベント・ドリブン型とは関係がありません。

それと、Target は、予約語ではありませんが、イベント・ドリブン...続きを読む

QイベントID 3224 の意味がわかりません

会社で、データサーバ機として、使っている WindowsNT Server4.0 機なんですが、いつからか、システムのイベントログにきまったエラーが出ています。
 ソース:NETLOGON
 分類 :なし
 ID  :3224
 「次のエラーが発生したため、アカウント AAAAA$ のマシン アカウント パスワードの 変更に失敗しました:
 現在、ログオン要求を処理できるログオン サーバーは ありません。」

AAAAA はデータサーバのコンピュータ名です。
これについて、詳しい方、詳しいホームページ等ありましたら教えて下さい。

Aベストアンサー

MicrosoftのSuportServices の
http://support.microsoft.com/default.aspx?scid=%2Fisapi%2Fgomscom%2Easp%3Ftarget%3D%2Fjapan%2Fsupport%2Fkb%2Farticles%2Fjp186%2F5%2F45%2Easp&LN=JA

でどうでしょう。
ちなみに、MicrosoftのSuportServices で
「NETLOGON」で検索し、「3224」で絞込み検索しました。

参考URL:http://support.microsoft.com/default.aspx?scid=%2Fisapi%2Fgomscom%2Easp%3Ftarget%3D%2Fjapan%2Fsupport%2Fkb%2Farticles%2F

Qウォッチウインドウで確認すると、「Range("a1").Value」は「十」ボタンができる

Sub test()
Dim Strmoji As String
Strmoji = "a"
MsgBox Range("a1").Value
MsgBox Strmoji
End Sub

Range("a1").ValueとStrmojiをウォッチ式に追加して
このコードをF8でデバッグしていくと
Range("a1").Valueの方だけ「十」ボタンが付き、
クリックすると広がりたくさんの情報が表示されています。

これはRangeだからですか?Cellも試してみたけど同じでした。
しかしなぜ、Strmojiは「十」ボタンがでないのでしょうか?

「十」ボタンがでるのとでないのでは何が違うのですか?
よろしくお願いします。

Aベストアンサー

こんにちは。

端的に言って、ウォッチ式の登録が間違ってはいませんか?
添付の図をみてください。

 Range("A1")+....Object/Range
 .Value .........Variant/String
 Strmoji.........String

この前も別の方の質問でも、ウォッチウィンドウがありましたが、値を確認するなら、ローカルウィンドウでも良いと思うのですが……。プラス(+)が右隣に出るのは、オブジェクト・配列・コレクションということになるのだろうとは思うのですが、それは、開ければ分かると思います。

Qイベントevt?evt.target:event.srcElement;の意味合い

以下の理解で合っているのでしょうか?
よくイベントの取得で

エレメント.onclick = function(evt){
var e = evt?evt.target:event.srcElement;
}
でeにイベントオブジェクトの発生元要素をセットしているのを見かけますが、
これは、ブラウザーの違いの吸収なのでしょうか?

firefoxでは、イベントハンドラー関数にイベントオブジェクトが渡されるので、渡されたイベントオブジェクトよりevt.targetで発生元要素をセットし、一方IEでは、eventという名前のオブジェクトが存在している(?)ので、イベントハンドラー関数にイベントオブジェクトが渡されず、event.srcElementで発生元要素をセットする。
 ※Opera、Safariは何でも良い

IEの場合、後から、イベントが追加されたらeventオブジェクトはどうなるのでしょうか?ある要素の一つのイベントタイプには一つのイベントハンドラーしか定義できないのでしょうか?

Aベストアンサー

> ある要素の一つのイベントタイプには一つのイベントハンドラーしか定義できないのでしょうか?
attachEvent() を使えば、複数のイベントハンドラを定義できそうです。(未検証)
また、attachEvent() の第一引数からイベントオブジェクトを取得できる、とbabu_babooさんに教わりました。
http://okwave.jp/qa5081024.html?ans_count_asc=1

ただ、attachEvent は実行順が不定という欠点があるので、現実的には「出来ない」という結論になると思います…。

addEventListenerとattachEventでは実行される順番が違う at HouseTect, JavaScripter Blog
http://hisasann.com/housetect/2008/09/addeventlistenerattachevent.html
IEのイベント実行順序は不定? - inamenaiの日記
http://d.hatena.ne.jp/inamenai/20080915/p1

IEが addEventListener() に対応してくれればいいのですが…。

> ある要素の一つのイベントタイプには一つのイベントハンドラーしか定義できないのでしょうか?
attachEvent() を使えば、複数のイベントハンドラを定義できそうです。(未検証)
また、attachEvent() の第一引数からイベントオブジェクトを取得できる、とbabu_babooさんに教わりました。
http://okwave.jp/qa5081024.html?ans_count_asc=1

ただ、attachEvent は実行順が不定という欠点があるので、現実的には「出来ない」という結論になると思います…。

addEventListenerとattachEventでは実行される順番...続きを読む

QエクセルVBAで If~ Then

If Range("A1") = "" Then Exit Sub と

If Range("A1") = "" Then
Exit Sub

では違うのですか?
通常改行すると思っていたのですが、改行したらエラーになってしまいました。

Aベストアンサー

ANo.#2の補足です。

Excel VBAのヘルプで『キーワードを入力してください』の所に"IF"と入れると、その下の『キーワードを選択してください』の下に"If...Then...Else"と選択肢がでますから、それをダブルクリック、その下の選択欄に『If...Then...Elseステートメントの使い方』というのが出ますので、読んでみてください。

・『1つのステートメントだけを実行するときは、If ... Then ... Elseステートメントの1行の構文を使います。』
・『複数行のコードを実行するには、複数行の構文を使用する必要があります。この構文には、次の例のようにEnd Ifステートメントが含まれます。』
(以上、VBAのヘルプから引用)

"Then"と"Else"の後に続く処理がそれぞれ1つずつであれば、1行に記述することが出来、"End If"は必要ありません。(厄介なことに、"End If"をつけるとエラーになります。)

If ... Then x = 1 Else x = 0

処理が2つ以上になると、複数行の記述になるので、最後に"End If"が必要になります。(ご質問のように"Then"の後ろで改行した場合も、VBAでは複数行の記述と解釈されてしまいます。)

If ... Then
  x = 1
Else
  x = 0
End If

>通常改行すると思っていたのですが、・・・

"If"だけでなく、改行した方がプログラム作成者以外の者にも処理がわかりやすいという観点から、VBA以外のプログラミング言語でも、改行した書き方が推奨されているので、その影響でしょうね。(VBAではないですが、私も改行するように教えられました。)

ANo.#2の補足です。

Excel VBAのヘルプで『キーワードを入力してください』の所に"IF"と入れると、その下の『キーワードを選択してください』の下に"If...Then...Else"と選択肢がでますから、それをダブルクリック、その下の選択欄に『If...Then...Elseステートメントの使い方』というのが出ますので、読んでみてください。

・『1つのステートメントだけを実行するときは、If ... Then ... Elseステートメントの1行の構文を使います。』
・『複数行のコードを実行するには、複数行の構文を使用する必要があ...続きを読む

QEnableEventsの意味は

VBAを勉強中の初心者です。

Excelでプロシージャの中に書かれている次の文は、どういう意味を持っているのですか。

Application.EnableEvents = False

'処理命令文

Application.EnableEvents = True

EnableEventsとは、何を可能にさせると言っているのでしょうか。
= Falseとは、何が違うと言っているのでしょうか。

割り込み禁止で、ここで処理が実行されている間は、他の余分なことは受け付けないと言っているのかと勝手な想像もしていますが、どうでしょうか。

教えて下さい。よろしくお願いします。

Aベストアンサー

こんにちは。

VBAを勉強中としたら、その辺りは、自然に分かってくるものだから、ちょっと早いかもしれませんね。イベント自体はお分かりになっていますね。後で、マニュアルやヘルプで確認してください。

他のアクションを起動にして、別の動作をするというものです。

Private Sub Worksheet_Change(ByVal Target As Range)

この場合は、Enter を押したときに発生します。

それ自体は、受身でよいのですが、そのマクロ自体が、別のセルを代入したりすると、もうひとつのイベントを発生させてしまい、プロシージャの中で、無限ループに近い形になっています。(ただし、完全な無限ループではないので、1万回程度で止まります。)そこで、その無限ループをとめなくてはならないので、そうした、

Application.EnableEvents = False
ということをします。

逆に、
Application.EnableEvents = True で戻してあげないと、今度は、そのイベント・ドリブン型プロシージャはうんともすんとも言わなくなってしまいます。

>割り込み禁止で、ここで処理が実行されている間は、他の余分なことは受け付けない

その範囲内だけ、イベントを発生させないということです。
厳密には、そういったものには、以下のようなものがあります。
Application.Interactive = False

.

こんにちは。

VBAを勉強中としたら、その辺りは、自然に分かってくるものだから、ちょっと早いかもしれませんね。イベント自体はお分かりになっていますね。後で、マニュアルやヘルプで確認してください。

他のアクションを起動にして、別の動作をするというものです。

Private Sub Worksheet_Change(ByVal Target As Range)

この場合は、Enter を押したときに発生します。

それ自体は、受身でよいのですが、そのマクロ自体が、別のセルを代入したりすると、もうひとつのイベントを発生させてしま...続きを読む

QRange(Cells(32, 14)).Value = "S" がエラーになります

よろしくお願いします。いつもgooの皆さんに大変お世話になっています。
エクセルは2013です

Range(Cells(32, 14)).Value = "S" がエラーになります
メッセージは「Range メソッドは失敗しました Worksheet オブジェクト」です

32行目の14列にSを書き込みたいので、ネットで調べてやってみたのですが
よく理解できません

14という数値を使って書きたいのですが、どう書き換えたら良いでしょうか
どなたか教えてください

Aベストアンサー

この場合一つのセルですから
Cells(32, 14).Value = "S"
これだけです。Rangeは不要です。


人気Q&Aランキング

おすすめ情報