• ベストアンサー

初級シスアドの問題が分かりません。

初級シスアド 平成16年度秋季 問24です。 ファイル中のレコードを1レコードずつ印字するソフトウェアがある。このソフトウェアでは,明細行を印字する直前にマクロ記述を呼び出して実行する。次のマクロ記述を使って印字したものはどれか。ここで,ファイルの1レコードは1行の明細行(XXXX XXXX XXXXで表示)として印刷される。 〔マクロ仕様〕 1. マクロ記述は,記述した順番に従って実行される。 2. マクロ記述の中に変数を定義できる。初期値は0である。変数は,すべての明細行を印字し終わるまで,その内容を保持する。 3. マクロ記述の中で条件を指定できる。条件は“条件”欄に記述し,条件を満たした場合には,“動作”を実行する。“線引き”は,線(-で表示)を印字する。 〔マクロ記述〕 1. i+1→i 変数iに1を加える。 2. 変数iが3なら,線を印字する。 3. 変数iが3なら,iの値を1にする。 答えは、 XXXX XXXX XXXX XXXX XXXX XXXX -------------- XXXX XXXX XXXX XXXX XXXX XXXX -------------- なのですが、i=3のとき、線を引いた後、i=1となるので、 XXXX XXXX XXXX XXXX XXXX XXXX -------------- XXXX XXXX XXXX -------------- という風になるのではと思ったのですが・・・。 どなたか解説をお願いします。

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

  • ベストアンサー
  • ann_dv
  • ベストアンサー率43% (528/1223)
回答No.4

No.2ですが、先ほどの見解は間違えておりました。 i=0(初期値) [1回めのマクロ発動] i+1=1 [1回めのマクロ終了] XXXX XXXX XXXX (1つめのレコードを印字) [2回めのマクロ発動] i+1=2 [2回めのマクロ終了] XXXX XXXX XXXX (2つめのレコードを印字) [3回めのマクロ発動] i+1=3 -------------- (ここで変数iが3だから、線を印字する) さらに、iが3だから、i=1になる。 [3回めのマクロ終了] XXXX XXXX XXXX (3つめのレコードを印字) [4回めのマクロ発動] i+1=2 [4回めのマクロ終了] XXXX XXXX XXXX (4つめのレコードを印字) [5回めのマクロ発動] i+1=3 -------------- (ここで変数iが3だから、線を印字する) さらに、iが3だから、i=1になる。 [5回めのマクロ終了] と言う流れで、印字結果は XXXX XXXX XXXX XXXX XXXX XXXX -------------- XXXX XXXX XXXX XXXX XXXX XXXX -------------- となります。 これでご理解頂けたでしょうか。

Excalibur
質問者

お礼

回答ありがとうございます。 スッキリしました。 i=3の時に、線を引くだけでなくレコードの印字も行なっていたのですね! やっと意味が分かりました。

その他の回答 (3)

  • Tasuke22
  • ベストアンサー率33% (1799/5383)
回答No.3

i=3の時、線を引くだけでなく、 線を引いた後で詳細を印刷していますね? 次回、iが2にされても線は引かれないで 詳細の印刷がありますから、 線と線の間は詳細が2行になります。

Excalibur
質問者

お礼

回答ありがとうございます。

  • ann_dv
  • ベストアンサー率43% (528/1223)
回答No.2

iの初期値が0である以上、最初だけは3行表示されると思います。 各行を印刷する直前のiの値を想定すると・・ i=0 i+1=1 XXXX XXXX XXXX i+1=2 XXXX XXXX XXXX i+1=3 XXXX XXXX XXXX -------------- i=1 i+1=2 XXXX XXXX XXXX i+1=3 XXXX XXXX XXXX -------------- と、なるはずです。

  • denden015
  • ベストアンサー率27% (40/147)
回答No.1

マクロなので繰り返す処理になります. (i=1) XXXXX (i=2) XXXXX (i=3) ----- (i=1) XXXXX (i=2) XXXXX (i=3) ----- ・・・・・・・・

Excalibur
質問者

お礼

回答ありがとうございます。

関連するQ&A

  • エクセルのマクロがどこに格納されているのか分かりません

    Excel2003です。エクセルを開く際にマクロの有効・無効を問うセキュリティ警告が出ます。ですのでこのファイルにマクロが含まれているのは間違いないと思います。 ゴールシークを実行するごく簡単なマクロなのですが、マクロのモジュールがどこに格納されているか分かりません。おそらく基本が分かっていないのだと思いますが、ご教示くださいませ。 ツール-マクロ-VBEを立ち上げると、プロジェクトエクスプローラに表示されるのは次のとおりで、モジュールが表示されません。 funcres (FUNCRES.XLA) VBAProject (ファイル名.xls) └Microsoft Excel Objects  └Sheet1 (Sheet1)  └ThisWorkbook このファイルは2枚のシートで構成されており、計算式などが記述されているSheet1と下記3行の記述があるMacro1です。 ツール-マクロ-マクロ-編集を実行すると、Macro1シートのセルに飛びます。そのシートには1列3行の記述があり、次のとおりです。マクロの実行で飛ぶのは一番上の行です。 Record1 =GOAL.SEEK("R4C5",0,"R4C8") =RETURN() ちなみに"R4C5"に記入されているのが式、"R4C8"に記入されているのが変数、式の値の収束目標値はゼロです。 Record1が記入されているセルは名前が定義されています。名前はRecord1です。 何となくVBEのモジュールに記載されるはずのものがMacro1シートに記述されているような気がしますが、よく分かりません。参考書などを引いたのですが、分かりませんでした。等号があるので関数かと思いましたが、GOAL.SEEKやRETURNという関数はありませんでした。 要領の悪い質問で申し訳ありませんが、ご教示よろしくお願いいたします。

  • 初級シスアド問題

    初級シスアドの勉強をしているのですが、わからないところがあるので、教えてください! 1.POSデータや顧客情報などの蓄積された膨大な量の生データから、経営にとって必要な傾向、相関関係などを導き出すための技術や手法はどれか。  ア、データウェアハウス イ、データマイニング ウ、メタデータ エ、リポジトリ 2.品質管理に用いられる管理図に関する記述のうち、適切なものはどれか。  ア、管理限界は、製品が不良品であるかどうかを判断するための規格値をもとに設定する。  イ、工程に異常が起きているのに、プロット点が管理限界内に収まっているために、異常を見逃す誤りのことを、”あわて者の誤り”という  ウ、すべてのプロット点が管理限界内に収まっていても、工程が異常であると判断する場合がある  エ、プロット点が連続的に中心線の近くに集まっているときは、工程が安定した状態にあると判断できる 3.JAVA言語によってプログラミングされたソフトウェアのうち、HTMLファイルに組み込まれてWebサーバからダウンロードされ、Webブラウザ上で実行される形態のものはどれか。  ア、JavaVM イ、Javaアプリケーション ウ、Javaアプレット エ、Javaスクリプト 4.システム開発は、基本計画、外部設計、内部設計、プログラム設計、プログラミング、テスト、運用・保守工程に分けられる。各皇帝のうち、外部設計で行う作業として、適切なものはどれか。  ア、画面設計 イ、テストケースの作成 ウ、モジュールの分割 エ、要求分析・要求定義 5.連想コード(mnemonic code)に関して適切なものはどれか。  ア、EBCDICコード、Unicodeなどが、その例である  イ、課コードの上位の桁を部コードにするというように、コードの各けたに意味を持たせるものである。  ウ、コード化の対象となるものの名称や略号をコードの一部に取り入れたものである。  エ、対象データの先頭から順番に一連の番号を振り割ったものである。 以上、たくさんあり申し訳ないですが、よろしくお願いします。

  • エクセルマクロで行の選択のしかた

    教えてください。エクセルマクロで… 変数iを使って、たとえばi行目からi+2行目を選択したい場合、  rows( ) の括弧の中はどういう風に記述すれば良いのでしょうか。 お願いします。

  • windows7上でVBAマクロがエラー

     仕事で使っているエクセル97で作ったVBAマクロがありますが、winXPからwin7に乗り換えたらエラーがでるようになりました。  コマンドボタン押下によるマクロで、変数フラグに「xxxx=1」という記述でコンパイルエラーが起こり、実行がストップします。  自動処理だけを目的に作っており、定石を踏んだマクロになっておらず、このxxxxにもディメンションで変数型を指定しておらず(こちらにおられる諸兄には怒られそうですが)、 Private Sub CommandButton1_Click() Application.ScreenUpdating = False xxxx = 1   :  というソースの中で、開始直後にxxxx=1にフォーカスがあたり、コンパイルエラーになります。  winXPまでは問題なく動作していたマクロです。(Vistaでは試すチャンスがありませんでした)  解決方法はあるのでしょうか。それとも変数にDim定義を追加する修正をソースへいれないとだめでしょうか。  ご存知の方、ご指導ください。

  • サクラエディタのマクロで外部から取り込んで

    以下のようなことをしたいのですが、サクラエディタのマクロでできますでしょうか? またそれ以外の方法でも構いません。 <ファイル1> AAAA BBBB CCCC ・・・ ・・・ <編集ファイル> これはXXXXです。  <-XXXXを変数でAAAAやBBBBに変えたい。追記したい。 これはAAAAです。 これはBBBBです。 これはCCCCです。 ・・・・・・・・ ・・・・・・・・ このような感じで追記で外部ファイルから1行ずつ読み出して、 任意の文字を置くことはできますでしょうか? よろしくお願いします。

  • 問題がとけません

    以下の問題がわかりません。 教えていただけますでしょうか? 以下の仕様を満たすプログラムを作成せよ。 キーボードから2整数を読み込み,読み込んだ順に標準出力にそれらの値の10進数表現をスペース文字で区切って1行に書き出し,改行する。読み込んだ一番目の整数の値が1000でなければ,次の2整数を読み込み同様に書き出す。一番目の整数の値が1000のときプログラムの実行を終了する。 ヒント------------------------------------------------- stdio.hをインクルードする。 読み込んだ値を保持するための2つの整変数を宣言して定義する。 2つの整数を読み込んで,その値を書き出すことを繰り返す部分は,次のdo-whileループで実現する。 do { (1) //2整数の読み込み //2整数の書き出し } while(条件); (2) プログラムの実行は上から順に行われるが,(2)で条件が真であれば(1)に戻り,そこから再び下方に順番に実行される。条件が真でなければ,(2)の次の行から下に順番に実行される。したがって,(2)の条件が満たされているかぎり,(1)と(2)の間を繰り返し実行することになる。このdo-whileループは,必ず1回は実行される点で,whileループと異なる。 行中に//があると,そこから行末まではコメントとみなされ書かれている内容は無視される。また,任意の位置に書かれた,一対の/*と*/の間もコメントとみなされる。 この課題の繰り返しの条件は,読み込んだ一番目の整数が1000でないこと。 iを整変数として, i != 1 という論理式の値は,iが1のとき偽,iが1でないとき真である。 2種類ある等値演算子の1つであるこの"!="という2項演算子(演算子の両側に1項ずつの2項を使う演算子)による演算結果は,両側の2つのオペランド(演算子が働きかけるもの)の値が「等しくない」とき真,それ以外のとき偽である。もう一つの等値演算子は"=="で,演算結果は2項が「等しい」とき真,それ以外のとき偽となる。 

  • ACCESSのマクロに関しまして

    お願いします。 ACCESS97で追加クエリを作成し、その後自動起動にしようと思い、マクロで追加クエリを項目に入れマクロを作りました。 マクロを作成する際に、モジュールでレコード追加するテーブルを一度削除しようと思い、「DELETE文」でモジュールを作成し、マクロの追加クエリの前に「プロシージャの実行」でモジュールのプロシージャを実行するようマクロに記述しました。 <マクロ内容> (1)「プロシージャの実行」  (追加クエリで追加するテーブルの中身をDELする) (2)「クエリを開く」  (追加クエリでレコード追加) この用に記述し、マクロ名を「AutoExec」で記述して、ファイルを実行してもマクロが起動しません。 (1)の「プロシージャの実行」までは、実行されているようなのですが(テーブル内確認)、以降の追加クエリが実行されません。 何か他の設定があるのでしょうか? お願い致します。

  • [Excel VBA]複数ファイルで条件を満たす行

    Office 365を使用しています。 下記の条件で行削除したいのですが、マクロではどうのよに記述したら良いでしょうか? ・対象のExcelファイルが↓3つあります >グループリスト >一般顧客 >特別顧客 条件; >グループリストファイル; F列 ---- 1-1 'グループ番号 D列 ---- XXXX '顧客番号 ・グループ番号 1-1のすべての顧客番号が削除対象 処理; 1. >一般顧客ファイル A列 ---- XXXX-XX 'サブ顧客番号 B列 ---- XXXX '顧客番号、グループリストファイルのD列 ・B列、グループリストファイルのD列がマッチした全行を削除して、削除件数をカウント 2. >特別顧客ファイル H列 ---- XXXX-XX 'サブ顧客番号 ・H列、一般顧客ファイルのA列がマッチした全行を削除して、削除件数をカウント *一般顧客ファイルでマッチした行の削除前に、特別顧客ファイルの対象行を削除する必要があると思います

  • エクセル マクロの記述をご教示下さい。

    宜しくお願い致します。 ● Aファイルに下記のようなマクロを記述したい。 ・BファイルのB列の6行目から2000行に入力されている、データを 削除する。 ・出来れば、人為的にBファイルは、立ち上げない状態で削除したい。 ・マクロを実行することによって、自動的に立ち上がるのは結構です。 ・また、削除後、Bファイルは立ち上がっていても結構です。 ご指導のほど宜しく御願い申し上げます。

  • 別のエクセルファイルの値をコピーをしたいです

    別のエクセルファイルの値をコピーをしたいです。 現在、仕事でファイルAにファイルBの値をコピーペーストをする作業を行っております。 しかし、量が多いのでいちいちファイルを開いてコピーして貼り付けという作業は時間がかかるのでマクロでやりたいと考えています。 そこで教えてほしいのですが、以下のような操作をマクロでするにはどうしてらよいのでしょうか? 1.ファイルAの列範囲F~J、行は9から下にファイルBの値をコピーしたい。 2.コピーするファイルBの値の範囲は、列E~I・行は1から下。 3.コピーするファイルBの行は毎日更新されるため、行の範囲は不特定です。 つまりは 昨日のファイルBの行は10まであり、マクロを実行するとファイルBのE1~I1からE10~I10の値がファイルAのF9~J9から下にコピーされる。 今日のファイルBの行は4まであり、マクロを実行するとE1~I1からE4~I4の値がファイルAのF9~J9から下にコピーされる。 という操作をマクロで実行したいと思っております。 また、ファイルBの名前も不特定のため、ファイルはダイアログで指定し、指定したファイルのE1~I1から下の値をコピーできるようにしたいです。 毎日の作業ですので、これが出来れば効率はぐっと上がります。 わかる方、どうか回答宜しくお願いいたします。