ひとつ足して2つ飛ばしてなど月報などでの計算になやんでいます。今は、ひとつずつクリックしています。31以上でエラーがでます。いい方法があればお願い致します。

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

A 回答 (6件)

http://www.microsoft.com/japan/enable/kblight/t0 …
偶数行または奇数行のデータだけを合計する方法

http://www.csi.co.jp/FlavorTea/flavorhomepage/fl …
2行おき


=SUM(IF(MOD(ROW(A1:A5),2)=0,A1:A5,0))

数式を指定してから、CTRL + SHIFT + ENTER
(遇数行を合計)


ちなみに質問は
すぐに意図が分かったので
充分に分かりやすいものでしたよ。

わたしも初めて使ったので勉強になりました。
ありがとうございました。
    • good
    • 0
この回答へのお礼

ありがとうございました。さっそく、仕事に役立てたいと思います。明日会社へ行くのが楽しみになりました。

お礼日時:2002/02/24 11:02

こういうアイデアの利用はどうですか。


Sumif関数を利用するのです。例として
A1からA10まで加えるべき数値が入っているとしとします。
B1からB10までに、加えたいA列の行と同じ行のB列(注1)に「1」(注2)を入れて行きます。例えばA5を加えたい時はB5に「1」をセットします。A5とA8とA10を足したいときは、B5とB8とB10に「1」を入れます。そしてA11に式を入れます。=SumIf(B1:B10,"=1",A1:A10)
これでルールなき任意のセルを加えることが出来ました。
後日とかに、B列を見ればどれとどれを加える(た)か一目瞭然というメリットがあります。
(注1)実際では、この列は表として使わない、右のZ列とかを使えば
   よいのでは。
(注2)1文字でなくても、数個の文字列でもいいから、sisann(資産   のつもり)、fusai(負債項目のつもり)などでも良いと思う。
   またB列にsisannとfusaiが同居していてももちろんOK。
   漢字で「資産」とB列に入れるも良し。
(注3)条件である、上記では=1はダブルクオーテーションで囲むこと。
    • good
    • 0
この回答へのお礼

いいアイデアありがとうございました。柔軟な考えがひつようですよね~。がんばります。

お礼日時:2002/02/25 14:08

>今後質問の仕方に注意します。


いえいえ、わかんなくて悩んでるときはアタシもそんなもんです。
で、ワタシもkenken0001さんのようにMOD+ROW関数を使います。

参考URLはワタシもしょっちゅうお世話になっているページです。検索語句を考えるのに頭を一ひねりする必要がありますが、すっげー簡単に悩みが解決します。

参考URL:http://www.fuji.ne.jp/~excelyou/exsearch.htm
    • good
    • 0
この回答へのお礼

早速教えていただいたホームページを見させていただきました。いろいろな方の質問があり勉強になります。いいところを紹介していただきありがとうございました。

お礼日時:2002/02/25 14:03

=A1+A3+A5+A7+・・・ってやつですね。

30個までしかExcelは対応できないようですね。
1.○行おきに足す
2.行の項目が同じモノ(例えば得意先名)を足す
によって対処する関数が変わってきますので、補足ください。

この回答への補足

1番の○行おきに足す方法を教えてください。お願い致します。今後質問の仕方に注意します

補足日時:2002/02/24 09:11
    • good
    • 0

質問の意味が良くわかりません。

例えばB1のセルに=SUM(A1+A2+・・・)
と式を入れるとして、( )内の足すセルの数が31を越えるとエラー
になるというようなことですか。100ほど入れて見ましたが結果は出ました。
このa1+a2+・・・の部分を入力するのが大変で、指定・入力間違いが起こりやすいということですか。あるいは、口で言えば規則性があるので、何かその式の表現法や適当な他の関数があるのではないかということですか。それなら個別に考えるしかないと思いますが。
(1)先にご回答の方が書かれている、飛び飛びの範囲を「:」でそれぞれ表し、それを複数個「,」で繋ぐ方法。(2)小刻みに集計を表外のセルに集計して、またその集計したセルを使って集計してという風にする方法。例えば
K8に=A1+A3+A5,K9に=A7+A8+A10、K10に=K8+K9+・・・(メインの表はI列までで終わりと仮定)
など。的外れならごめんなさい。
    • good
    • 0
この回答へのお礼

質問の仕方が悪く申し訳ございません。今後具体的に質問致します。ありがとうございました。

お礼日時:2002/02/24 09:10

よくわかりませんがExcelのSUM関数のことでしょうかねぇ?


そうだとして、とりあえずは、
=SUM(A1:A10,A15:A20,A25:A30)
みたいに個別セル指定ではなく、範囲指定でワークシート関数を書くと大丈夫だと思います。
    • good
    • 0
この回答へのお礼

質問の仕方が悪く申し訳ございません。今後具体的に質問致します。ありがとうございました。

お礼日時:2002/02/24 09:09

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

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

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

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

QA8 7600の価格

楽天市場でAMD A8 7600が、28525円(税込み30807円)で売られているのを見ました。
このような値段で売ることはどうなのでしょうか?
PCショップでは現在概ね8000円台で売られています。
それにこのA8 7600は、発売当初でも11000円~12000円台で売られていました。

価格のつり上げともいえる行為ですが、違法行為ではないのでしょうか?
回答お待ちしています。
よろしくお願いします。

Aベストアンサー

AMD A8 7600 は、Amazon では現在、下記の価格です。
https://www.amazon.co.jp/gp/search?field-keywords=amd+a8+7600+processor&index=blended&tag=mozillajapan-fx-22&sourceid=Mozilla-search&__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&linkCode=qs

¥7,645、¥20,049 、¥16,503 、¥30,499 と言う具合に、結構高い価格のものもありますが、結局売れているのは、最初のものだけです。これは、Amazon が扱っていて、出荷も Amazon になります。当然と言えば当選で、普通安いところから買いますよね。

それ以外の A8 7600 は、売り手が値付けしていますので、別に違法でも何でもありません。楽天も同様で、どのような価格を付けても販売できます。法的に定められた価格など存在しないからです。ただ、相場と言うものが存在していますので、適正な価格を付けて販売しないと、売れません。ただそれだけです。もし、それで A8 7600 が品切れになった場合、どうしても欲しい人が、高き価格で買うことになりますが、その場合、価格を釣り上げているとは言わないでしょう。たとえ 100 万円でも、欲しい人には有り難いはずです。

これは、良くあります。メモリなどでも、同じものが極めて高い価格が付いていたりしますが、適正な値段の品物が流通している間は、その安いものしか売れません。Amazon の A8 7600 ¥7,645(送料無料) は、中古で ¥8,186 + 送料 となっていますので、あえて中古を買う人はいないでしょうけれど、新品が無くなれば、手に入るのは中古のみとなりので、高くても売れるかも知れません。

買い手も、賢く立ち回らないと高いものを売りつけられることになりますので、欲しいものは相場をよく見て買いましょう。

AMD A8 7600 は、Amazon では現在、下記の価格です。
https://www.amazon.co.jp/gp/search?field-keywords=amd+a8+7600+processor&index=blended&tag=mozillajapan-fx-22&sourceid=Mozilla-search&__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&linkCode=qs

¥7,645、¥20,049 、¥16,503 、¥30,499 と言う具合に、結構高い価格のものもありますが、結局売れているのは、最初のものだけです。これは、Amazon が扱っていて、出荷も Amazon になります。当然と言えば当選で、普通安いところから買いますよね。...続きを読む

QPowerPointでクリック1回で2つ以上のアニメーションを連続再生

PowerPointのアニメーションで、クリック1回に対して2つ以上のアニメーションを連続で再生できるでしょうか?あくまで、2つ同時ではなくて2つ以上のアニメーションを1つずつ連続にさせたいと考えております。

Aベストアンサー

2002(以降)であれば、2番目に実行を始めたいアニメーションの設定で「直前の動作の後」に開始するように設定すれば、ご希望通りの動作となります。

QQuad-Core A8-3500M/1.5GHz

ノートパソコンを買おうと考えています。
HPかレノボで悩んでいます。
どちらのスペックが高いのでしょうか?

(1)intel Core i5 2430M/2.4GHz(512KB)       Intel HD Graphics 3000
(2)AMD Quad-Core A8-3500M/1.5GHz(4MB)   MOBILITY RADEON HD 6620G

ともに
メモリ:4GB
HDD:500GB

価格がほぼ同じだったので、事前に相談したいです。

Aベストアンサー

 intel製CPUの持ち味は高い処理性能と安定性だと思います。ビジネスユースのPCでintel製が多いのは恐らくその製だと思います。

 一方AMD製intel製に比べて安価で高い処理性能を持ち、特に今回挙げられているAシリーズのAPUはintelより高性能な画像処理機構をCPUに統合しています。

 Microsoft Officeを中心とした事務作業中心の仕事用であれば(1)、ゲームやDTP等画像処理に重きを置いたプライベート用なら(2)といった所でしょうか。個人的にはAMD製がお勧めですが、ソフトウェア等の推奨環境は多くがintel製CPUを念頭においているため、AMD製CPU搭載PCでのトラブルの際にCPUが違うのが原因とされてしまう危険があります(個人的には噴飯ものですが・・・)。

 以上ご参考になれば幸いです。

Q日報のデータを月報へ

sheet1からsheet10には1sheet1日の、日報データを,sheet11は1行1日で
日報データを記録して、月報としています。
sheet1のセルA2にデータを入れると同時にsheet11のセルD6に入力、sheet2のA2に入れるとsheet11のD7に入力したいのです、
どのように設定のか教えてください。

Aベストアンサー

エクセルですね
sheet11のD6に =Sheet1!A2
sheet11のD7に =Sheet2!A2
と入力すれば出来ます。

エクセルの「新しいウィンドウを開く」と「整列」を利用すると同一ブック内の別のシートを同時に見ることが出来ます。
http://www.ne.jp/asahi/hh/siskin/n-window.htm
http://www.nextone.jp/no040930/it/it02.html
エクセル2007
http://www.eurus.dti.ne.jp/~yoneyama/Excel2007/excel2007-window.html#sheet

QオプテロンとASUS A8N-Eは相性悪でしょうか

ASUSのA8Nにオプテロン1.8GHzを装着しています。
度々フリーズして困っています。
ビデオカードの相性かとも思い、RADEON X1300LEからG-Forth7600GTにしてみましたが変わりません。
オプテロンをPC用マザーに装着するのは無理があるのでしょうか。
どなたか教えてください。

Aベストアンサー

>オプテロンをPC用マザーに装着するのは無理があるのでしょうか。

A8N-E
http://www.asus.co.jp/products.aspx?l1=3&l2=15&l3=171&model=455&modelmenu=2

http://support.asus.com/cpusupport/cpusupport.aspx?SLanguage=ja-jp&model=A8N-E

Opteronでも対応していますけど・・・。
(対応BIOSには注意)

Qシングルクリックとダブルクリックのイベントについて

皆さん、こんばんは。
ちょっと疑問に感じたものがありましたので質問させてください。

今日のある質問、
内容はセルをシングルクリックした場合と
ダブルクリックした場合のイベントの違い。
その質問に対する次の回答について。

(1)両方のイベントを機能させるとSelectionChangeが先になり
 その後、同セルWクリックでDoubleClickイベントが機能します

(2)SelectionChange のシングル・クリックとBeforeDoubleClickの
 ダブル・クリックとはダブル・クリックの過程にシングル・クリック
 があるので、論理的に、そのイベントは重なってシングル・クリックに
 取られるはずです」


(1)はたぶん回答者の勘違いだろうと思うのでそれはいいのですが、
疑問に感じたのは(2)の方です。
(2)の意味は、ダブルクリックすると必ずシングルクリック
即ちSelectionChangeイベントのみが発生し、
BeforeDoubleClickは発生しないということでしょうか

いままでBeforDoubleClickも発生する場合があると思っていましたので質問しました。
回答者がVBA熟知の方なので当方が何か勘違いしているのかも知れませんが・・・。
以上宜しくお願いいたします。

皆さん、こんばんは。
ちょっと疑問に感じたものがありましたので質問させてください。

今日のある質問、
内容はセルをシングルクリックした場合と
ダブルクリックした場合のイベントの違い。
その質問に対する次の回答について。

(1)両方のイベントを機能させるとSelectionChangeが先になり
 その後、同セルWクリックでDoubleClickイベントが機能します

(2)SelectionChange のシングル・クリックとBeforeDoubleClickの
 ダブル・クリックとはダブル・クリックの過程にシングル・クリック...続きを読む

Aベストアンサー

StudyVBAさん、こんばんは。

私の書いた内容では、納得されなかったようですね。

シングルクリックのイベントは、ワークシート上では、SelectionChangeになりますが、そのイベントが発生して、ダブルクリック・イベントまでには至らない、ということで、別の言葉で表現すれば、同時に起動することはない、ということだったのですが。

論より証拠です。
私の考えた簡単なサンプル
'-----------------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
  MsgBox "SelectionChange"
End Sub

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range,
_ Cancel As Boolean)
 MsgBox "DoubleClick"
  Cancel = True 
End Sub
'-----------------------------------------------
ただし、SelectionChangeが発生しない条件が1つありますね。

それは、マウスカーソルを同じ場所で動かさないままで、DoubleClickをすれば、DoubleClickイベントが発生します。それを、あえて知って行うかどうかは、そのユーザーの判断になりますが、例えば、SelectionChangeのイベントを一旦、発生させてしまって、それをキャンセルさせて、さらに、もう一度、マウスカーソルを動かさないで、ダブルクリックで、DoubleClickイベントを発生させるのは、私は、それを実用度としては、かなり低いのではないと思いましたので、特に、取り上げはしませんでした。

ふつう、SelectionChangeと、BeforeDoubleClickとは、併記はしないと、私は思っています。

もちろん、キーボードなどの状態を取って、それで、分岐させる方法はありますが、それは、この件とは内容が違ってきますね。

StudyVBAさん、こんばんは。

私の書いた内容では、納得されなかったようですね。

シングルクリックのイベントは、ワークシート上では、SelectionChangeになりますが、そのイベントが発生して、ダブルクリック・イベントまでには至らない、ということで、別の言葉で表現すれば、同時に起動することはない、ということだったのですが。

論より証拠です。
私の考えた簡単なサンプル
'-----------------------------------------------
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 ...続きを読む

QA8-3850とCOREi5、どちらを選ぶべきか

質問No.6877763において、低価格自作PCを組む場合、CPUをIntelとAMDどちらにすべきか、という質問を行ったところ、AMDがいいのではないかという回答をいただきました。

その結果を踏まえ、昨日、お世話になっているPCショップへその旨伝えたところ、GPU内蔵CPUとしては、COREi5のほうがお勧めである、とのこと。また、必要なパーツと予算を照らし合わせてもそろえることができる、との解答を頂いています。

予算は、5万円ではなく4万円と伝え、この予算内で、
・CPU
・マザーボード
・メモリ
・ハードディスク
の、この4点を揃えられるかとの問いについては可能であるとの解答を得ており、また、CPUをA8-3850を選択するにせよ、COREi5を選択するにせよ、予算としてはさほど変わらない、という事になるようです。

その上で、COREi5のほうがCPU性能も、そしてグラフィック性能も格上だという説明を受けています。おそらく価格が抑えられるのはマザーボードの選択肢が理由なのでしょう。
また、CPU性能についても、キャッシュも多く、また内蔵GPUの性能も1万円くらいのグラボと同等のものだとの説明を受けています。が、GeForceの性能で言われてもちと解らないものですから…。
A8-3850のほうは、GPUは5千円クラスのものと同等のようですが、そのGPUを追加することでグラフィック性能は格段に上がるという解説もあります。
一方のi5については、そのグラフィック関連の仕様について、そこまで参考となる記事を見いだすことができなかったもので、比較することはできませんでした。
また、CPU性能そのものもよくわからないもので…

と、いうことで、質問No.6877763での条件とは又違った選択肢になる事になりますが…
同一予算内で組めるとなると、A8-3850、COREi5のどちらのCPUを選ぶのが賢い選択となるでしょうか。

質問No.6877763において、低価格自作PCを組む場合、CPUをIntelとAMDどちらにすべきか、という質問を行ったところ、AMDがいいのではないかという回答をいただきました。

その結果を踏まえ、昨日、お世話になっているPCショップへその旨伝えたところ、GPU内蔵CPUとしては、COREi5のほうがお勧めである、とのこと。また、必要なパーツと予算を照らし合わせてもそろえることができる、との解答を頂いています。

予算は、5万円ではなく4万円と伝え、この予算内で、
・CPU
・マザーボード
・メモリ
・ハードディスク...続きを読む

Aベストアンサー

予算4万円で、私が買うとしたら、AMD_CPU&M/B選んで、差額でSSD買いますね。
このクラスのCPUになると、体感的には、HDD→SSDが効果的です。

☆軽い用途(ネット、動画閲覧、オフィスソフトなど)では、CPU負荷低いので、
 Corei5-2500KもA8-3850も体感的にほとんど差はありません。
 一方で、HDDとSSDの差は、体感的に十分差がでます。
 軽い用途では、CPUよりもストレージに投資した方が、投資効果は圧倒的に高いです。

☆Corei5-2500K得意分野:動画エンコードや数値演算
 動画エンコードや数値演算では、Corei5-2500Kの方が1.5~2倍程度高速です。
 ただし、エンコードでは、ストレージ系がボトルネックになることもあり、限られた
 予算の場合思ったほどのパフォーマンスが得られないこともあります。

☆A8-3850得意分野:GPU3D処理、動画再生支援
 3Dゲームでは圧倒的です。また、ゲームに関して、Intel_GPUは、昔ほどひどく
 ないものの起動すらしないゲームがちらほらあります。
 また、好みの問題もありますが、動画の画質(色表現)も、Intel_GPUと比較すると
 優れていると思います。
 今だと、DiRT3(ラリーゲーム)がバンドルされてるのもうれしいポイントですね。

CPU:AMD A8-3850 BOX 12.5千円
M/B:BIOSTAR TA75M+ 8.0千円
MEM:UMAX Cetus DCDDR3-8GB-1600OC(4GB*2) 5.5千円
SSD:crucial Crucial m4 CT064M4SSD2 9.5千円
適当に見積もっても、3.6万円弱。
動画変換するなら、HDDを追加しても良いと思います。

予算4万円で、私が買うとしたら、AMD_CPU&M/B選んで、差額でSSD買いますね。
このクラスのCPUになると、体感的には、HDD→SSDが効果的です。

☆軽い用途(ネット、動画閲覧、オフィスソフトなど)では、CPU負荷低いので、
 Corei5-2500KもA8-3850も体感的にほとんど差はありません。
 一方で、HDDとSSDの差は、体感的に十分差がでます。
 軽い用途では、CPUよりもストレージに投資した方が、投資効果は圧倒的に高いです。

☆Corei5-2500K得意分野:動画エンコードや数値演算
 動画エンコードや数値演算では、Core...続きを読む

Qダブルクリックをシングルクリックで?

皆さんいつもありがとうございます。
またアドバイスをお願い致します。

以前こちらで「セルをダブルクリックする度に○→/→×→空白と変更できる」
コードをアドバイスして頂きました。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Select Case Target.Cells(1).Value
Case ""
Target = "○"
Case "○"
Target = "/"
Case "/"
Target = "×"
Case "×"
Target.ClearContents
Case Else
Exit Sub
End Select
Cancel = True
End Sub

と言うコードですが、これをシングルクリックで変更可能にする事は出来るのでしょうか?
是非アドバイスをお願い致します。

Aベストアンサー

隣の列のセルをボタンに見立てて操作するのはいかがでしょうか。
Accessのフォームで、行の数だけボタンが並ぶイメージです。
都度○等の入るセルにカーソルを移す事で、連続的にボタン?をクリックできる様にします。
あまり速くクリックすると、編集モードに入ってしまいますが、ご質問の趣旨からその心配はないかと思います。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'例えばC列をクリックしたときだけ作動する様にする
If Target.Column <> 3 Then Exit Sub
'複数セルを選択したとき作動しない様にする
If Target.Cells.Count > 1 Then Exit Sub
'B列の値を操作する
Target.Offset(0, -1).Select
Select Case Selection.Value
Case ""
Selection.Value = "○"
Case "○"
Selection.Value = "/"
Case "/"
Selection.Value = "×"
Case "×"
Selection.ClearContents
Case Else
Exit Sub
End Select
End Sub

隣の列のセルをボタンに見立てて操作するのはいかがでしょうか。
Accessのフォームで、行の数だけボタンが並ぶイメージです。
都度○等の入るセルにカーソルを移す事で、連続的にボタン?をクリックできる様にします。
あまり速くクリックすると、編集モードに入ってしまいますが、ご質問の趣旨からその心配はないかと思います。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'例えばC列をクリックしたときだけ作動する様にする
If Target.Column <> 3 Then Exit Sub
'複数セルを選択した...続きを読む

QCore i5の性能

ゲーム用CPUとしてCore i5を購入しようと思うのですが、最近のパーツ値上がりで予算が厳しいです。
上位と下位で性能差が大きなものでなければ、Core i5の下位のものを購入しようと思っています。
実際、ゲームプレイ時に体感出来るほどの性能差なのでしょうか?

具体的には以下の比較です。

(1)Core i5 3330 vs Core i5 3570
(2)Core i5 3470 vs Core i5 3550

(1)はベースクロックとブースト時の差も大きいので、重量級のゲームだと結構違うのではないかと考えています。
(2)は誤差の範囲に収まると考えているのですが、どうでしょうか?

又、設定を落とせば、最近のゲームでもCore i5 3330程度あれば快適に動きますか?
CPUをOCする予定はないのでk付きは選択肢にありません。
グラボはGTX660を購入済みです。

ご回答お待ちしております!

Aベストアンサー

>実際、ゲームプレイ時に体感出来るほどの性能差なのでしょうか?

Core i5 3570なら快適で、Core i5 3330だと快適じゃない、ってほどの差は出ませんよ。
CPUとしての性能で見ても2割も違いませんからね。
3Dゲームの場合、最も重要なのはグラフィック性能で、CPU性能に関しては不足しない程度にあればゲームは快適に動きます。
そりゃ、最高を求めるのならCPU性能も高いに越したことは無いですが、GeForce GTX660程度で快適にプレイできる程度のゲームを快適にプレイできる範囲の設定でプレイする限りにおいては大差ないです。

ぶっちゃけ、そんな事を悩むよりもグラボをワンランク上のものにした方が良かったと思いますよ。
新品のGeForce GTX660の最安価格が1万9千円くらいですが、Core i5 3570とCore i5 3330の差額である約2千円をグラボ代に回せば、中古ならGeForce GTX660Tiが買えましたからね。
箱無しとか付属品無しのGeForce GTX660Tiなら、2万1千円くらいから売ってますから。

>実際、ゲームプレイ時に体感出来るほどの性能差なのでしょうか?

Core i5 3570なら快適で、Core i5 3330だと快適じゃない、ってほどの差は出ませんよ。
CPUとしての性能で見ても2割も違いませんからね。
3Dゲームの場合、最も重要なのはグラフィック性能で、CPU性能に関しては不足しない程度にあればゲームは快適に動きます。
そりゃ、最高を求めるのならCPU性能も高いに越したことは無いですが、GeForce GTX660程度で快適にプレイできる程度のゲームを快適にプレイできる範囲の設定でプレイする限りにおいては...続きを読む

Qクリックイベントなのに、2回クリックしないとフォー

クリックイベントなのに、2回クリックしないとフォームが閉じないです。

フォームに閉じると言うコマンドボタンがあり、クリックイベントで

Private Sub cmd_閉じる_Click()
DoCmd.Close acForm, Me.Name
End Sub

としてるのですが、なぜか1回ボタンを押しただけではフォームが閉じません。
2回目押した時にフォームがとじます。
ダブルクリックでも閉じます。


Private Sub cmd_閉じる_Click()
'DoCmd.Close acForm, Form_Fフォーム.Name
End Sub
のように、フォーム名を指定すると1回のクリックで閉じます。
しかしMe.Nameだと2回目じゃないと閉じない理由がわかりません。

Fフォームは他フォームから
DoCmd.OpenForm Form_Fフォーム.Name, acNormal
で開いたから2回クリックしないと閉じないのでしょうか?

Aベストアンサー

【対応策】
OpenFormでは、以下の構文を使用するようにします:

  DoCmd.OpenForm "Fフォーム", acNormal

Closeでは、以下のどちらかの構文を使用します:

  DoCmd.Close acForm, "Fフォーム"
  DoCmd.Close acForm, Me.Name

(または、「Const cForm As String = "Fフォーム"」と定数を宣言しておいて
 「DoCmd.OpenForm cForm, acNormal」等とします)


【原因・理由】
ご推測の通り、原因はFフォームの開き方にあります。

実は、「Form_Fフォーム.Name」といったように「Form_Fフォーム」を何らかの
形で参照した場合、そのフォームが非表示で展開されてしまいます。
(「Form_Fフォーム.Visible = True」とすると、表示させることができます)

さらに、この方法を使用した場合、同じフォームを同時に複数展開させることが
可能になります。

<参考>
http://oshiete.goo.ne.jp/qa/7778972.html

この結果、
  1)Form_Fフォーム.Nameの参照により、Fフォームが非表示で展開
  2)DoCmd.OpenFormにより、Fフォームが通常表示で展開
と、Fフォームは二重で開かれることになります。

そのため、DoCmd.Closeを呼び出した際は、
  まず「1」によって、先に展開された非表示のFフォームが閉じられ、
  2回目の呼び出しでようやく「2」の通常表示のFフォームが閉じられる、
ということになり、見た目としては「2回クリックしないと当該フォームが閉じない」
という動作になっている、ということです。
 
従って、OpenFormでは「Form_フォーム1」を参照するのではなく、冒頭に提示
したように定数式を使用します。
(なお、上記参考URLで触れているように、同じフォームを意図的に複数表示
 したいなどの特殊な場合には、【OpenForm】は使わずに、【Form_Fフォーム】
 の方法だけを使用します)

また、これは「DoCmd.Close」を行う場合も同様で、そこで「Form_Fフォーム」を
参照してしまうと、表示済みのFフォームが閉じられる一方で、非表示のFフォーム
が展開されてしまいます。

ですので、この場合も同様に定数式を使用するか、既に展開済みの「自身」を
参照する(=新たにFフォームが非表示で展開されたりしない)「Me.Name」を使用
します。


【余談】
「Form_Fフォーム.Name」を参照するだけで本当に非表示で展開されているか
どうかは、以下の方法で確認できます:

1)開いているフォームを一旦全て閉じる
2)Ctrl+Gキーの同時押しなどでイミディエイト ウィンドウを開く
3)現在開いているフォームの数を確認するため、「?Forms.Count」と入力して
 Enterキーで改行
 →次行に「0」が表示される
4)その次の行に、「?Form_Fフォーム.Name」と入力して、Enterキーで改行
 →次行に「Fフォーム」が表示される
5)「?Forms.Count」と入力した行に戻って、Enterキーで改行
 →次行に「1」が表示される(=1つのフォームが開かれている)
6)一番下の行に移動して、「?Forms(0).Name」と入力して、Enterキーで改行
 →「Fフォーム」が表示される(=開かれたのがFフォームだとわかる)

【対応策】
OpenFormでは、以下の構文を使用するようにします:

  DoCmd.OpenForm "Fフォーム", acNormal

Closeでは、以下のどちらかの構文を使用します:

  DoCmd.Close acForm, "Fフォーム"
  DoCmd.Close acForm, Me.Name

(または、「Const cForm As String = "Fフォーム"」と定数を宣言しておいて
 「DoCmd.OpenForm cForm, acNormal」等とします)


【原因・理由】
ご推測の通り、原因はFフォームの開き方にあります。

実は、「Form_Fフォーム.Name」といったように「Form_Fフォーム」を何らかの...続きを読む


人気Q&Aランキング

おすすめ情報