• 締切済み

プログラムの組み方について

arataの回答

  • arata
  • ベストアンサー率49% (139/279)
回答No.2

可能です。 Excel、WordともにVBA(Visual Basic for Applications)と言うマクロ環境を持っています。 実際にどのように使うかですが、Excel2000を例に答えます。 なお、下記は、質問でご提示のプログラムを動作するようにExcelのVBAで動くように手直ししたものです。 □例 1.ワークシートを新規作成 2.メニューの[ツール]-[マクロ]-[Visual Basic Editor]でVisual Basic Editorを起動 3.メニューの[挿入]-[標準モジュール]で標準モジュールを挿入 4.メニューの[挿入]-[プロシージャの挿入]でプロシージャ挿入のダイアログを出す。 5.プロシージャ挿入のダイアログで「名前」をTEST、「種類」をSubプロシージャ、「適用範囲」をPublicプロシージャにしてOKボタンを押す。 6.Publuc Sub TESTからEnd Subの間を下記のように記述 Public Sub TEST()   Dim A As Integer   Dim B As Integer   A = 1   Do    A = A + 1    If A > 9 Then     Exit Do    End If    For B = 1 To A     MsgBox B    Next   Loop   MsgBox A End Sub (上記のプログラムは見やすくするために全角のスペースを使用しています。実際に動かす場合は、全角のスペースは半角のスペースに変えてください。) 7.Public Sub TESTとEnd Subの間のいずれかの位置にカーソルを置いた状態でF5キーを押してプログラムを実行する。 Excelのシートからマクロを起動することなども出来ますが、回答欄ではとてもご紹介できないので、ご勘弁ください。

関連するQ&A

  • n88basicのプログラムを十進ベーシックに翻訳してください。

    n88basicの次のプログラムを十1進ベーシックではどうなるのか教えてください。 10 cls 20 p=1000 30 for n=1 to 1000:next n 40 p=p-1 50 if p=-1 then end 60 locate 10,10:print p 70 goto 30

  • 十進ベーシックのプログラムの間違いを教えてください。

    誰か次のプログラムの間違いを直してください。入力を間違えても次に進めるようにするにはどこをどう変えたらよいのですか? RESTORE 30 READ a$ 40 INPUT b$ IF a$=b$ THEN IF a$<>b$ THEN GOTO 40 PRINT a$ GOTO 30 DATA i,x,d,k,k,h,end END IF END

  • 空欄に不等号が入るのですが・・・

    添付の図のようなフローチャートをbasicでプログラムすると次のようになる 130行目の空欄を等号ないし不等号ないし等号つき不等号で埋め 条件式を完成させよという問題がありました。 100 INPUT N 110 FOR I=1 TO N 120 LET A=I 130 IF (A+1)^2 (空欄) N THEN GOTO 190 140 NEXT I 150 IF A<=1 THEN GOTO 190 160 PRINT A 170 LET N=N-A^2 180 IF N>=1 THEN GOTO 110 190 END ここで入れるべきものはA^2がNを「超えない」なので>=ですよね? 解答を見ると>となっているのですが 解答の条件式でN=4として実行すると2が出力されるのでおかしな気がします。 解答が正しいのでしょうか?それとも間違っているのでしょうか?

  • サブルーチン

    下は身長の平均を求めるプログラムですけど、身長の高い順、低い順に並び替えしたいんですがどうしたらいいかわからないので、よかったら誰か教えていただけませんか                   REM プログラム     10            DIM A(12) 20 PRINT "メニュー” 30 PRINT "身長入力...1" 40 PRINT "身長出力...2" 50 PRINT "終了" 60 PRINT "どれにしますか" 70 INPUT B 80 IF B=1 THEN GOSUB300 ELSE 110 90 GOTO 30 100 IF B=2 THEN GOSUB500 ELSE 130 110 GOTO 30 120 IF B=3 THEN GOSUB700 ELSE 30 130 END 140 A(11)=B 300 FOR I=1 TO 10 310 PRINT i;: PRINT "人目" 315 INPUT C 320 A(I)=C 330 PRINT "これでいいですか?" 340 PRINT "1.YES 2.NO" 345 INPUT D 350 IF D=1 THEN 380 ELSE 370 360 IF D=2 THEN 315 ELSE 340 370 A(11)=A(11)+A(I) 380 NEXT I 390 RETURN 400 IF C=1 THEN 520 500 PRINT "先に入力してください" 510 GOTO 30 515 FOR I=1 TO 12 520 PRINT A(I) 530 NEXT I 540 RETURN 550 PRINT "これで身長の平均を求めるのを終わります"700 RETURN 710  

  • カシオのポケコン プログラム作成について

    先ほど同じ質問をしたのですが、質問の仕方が悪く意図した回答が得られなかったので、 再度質問します。 カシオのポケコン(Z-1GR)のBASICでプログラムを作成する際に Enterキーを押した場合と数値を入力した場合で分岐させたいのですが、やり方がわかりません。 例えば Aを入力、Bを入力すると、C=A+BでCの答えを表示させる。 ただし、Bの入力時に何も入力しないで、そのままEnterキーを押すと、C=0と表示させる と言った感じです 10 INPUT"A=",A 20 INPUT"B=",B 30 IF B="" THEN GOTO 40 ELSE GOTO 50 40 PRINT"C=0":GOTO 20 50 C=A+B 60 PRINT"C=";C:GOTO 20 上のライン30の指示がうまく実行しません。 「B="" THEN GOTO 40」の部分だと思うのですが この部分 (そのままEnterキーを押すとライン40に進む)をどのようにすればよいか 教えてください。 どなたかわかる方いらっしゃいませんか?

  • n88basicでは動いたのに十進ベーシックではだめでした。どうしてですか?

    10 INPUT a,b 20 IF a<b THEN beep 1,FOR n=1 TO 100000,NEXT n,beep 0 22 IF a<b THEN swap a,b 30 PRINT a/b END n88basicではこのままで動いたのに十進ベーシックでは「ここにNは書けません」とメッセージが出ました(20行)。どうしたらいいですか。

  • 十進BASICのプログラムについて

    十進BASICのプログラムについて 小町算のプログラムですが、 100 DIM s(9) 110 FOR i=1 TO 9 120 LET s(i)=-1 130 NEXT i 140 DO 150 LET sum=0 160 LET num=0 170 LET sign=1 180 FOR i=1 TO 9 190 IF s(i)<>0 THEN 200 LET sum=sum+sign*num 210 LET sign=s(i) 220 LET num=i 230 ELSE 240 LET num=10*num+i 250 END IF 260 NEXT i 270 LET sum=sum+sign*num 280 IF sum=100 THEN 290 FOR i=1 TO 9 300 IF s(i)= +1 THEN PRINT " + "; 310 IF s(i)= -1 THEN PRINT " - "; 320 PRINT i; 330 NEXT i 340 PRINT " = 100" 350 END IF 360 LET i=9 370 LET sign=s(i)+1 380 DO WHILE ( sign > 1 ) 390 LET s(i)=-1 400 LET i=i-1 410 LET sign=s(i)+1 420 LOOP 430 LET s(i)=sign 440 LOOP WHILE ( s(1) < 1) 450 END というものですが、このプログラム中にあるsum、num、signとはどういう意味があるのでしょうか?

  • カシオのポケコンのプログラム作成について

    カシオのポケコン(Z-1GR)のBASICでプログラムを作成する際に Enterキーを押した場合と数値を入力した場合で分岐させたいのですが、やり方がわかりません。 例えば Aを入力、Bを入力すると、C=A+BでCの答えを表示させる。 ただし、Bの入力時に何も入力しないで、そのままEnterキーを押すと、C=0と表示させる と言った感じです 10 INPUT"A=",A 20 INPUT"B=",B 30 IF B="" THEN GOTO 40 ELSE GOTO 50 40 PRINT"C=0" 50 C=A+B 60 PRINT"C=";C:GOTO 20 どなたかわかる方いらっしゃいませんか?

  • 最後の数

    以前Basicの勉強をしていたときに 課題で出された問題なのですが… (部屋を掃除していたらノートに問題とソースが書かれていて…) 問題は 「n個の数を並べ、3つめの数ごとに消していく。 で、最後に残る数はいくつか」というものです。 例)5個の数「1.2.3.4.5」として  fir→1.2.4.5 sec→1.2.5 thi→1.2 for→2 といった感じですf^^; で、basicのプログラムは 100 input "number of people =" ; a 110 N=3*a 120 if N>a then goto 140 130 goto 180 140 C=(N-a-1)/2 150 C=int(C) 160 N=C+N-a 165 print N;","; 170 goto 120 180 print "J3(";a;")=";N 190 end という風になっていたのですが、どうしてこういった 解き方になったのかがどうしても思い出せません。 (なさけないですねf^^;) だれかわかる方がいたらアドバイスをお願いします。 (できればこのプログラムにそったやり方だと良いのですが…)

  • BASIC数値解析プログラムについて。

    初めまして、私は大学でBASIC初心者でN88互換BASICでのプログラミングを今年から勉強しています。↓のプログラムで収束過程の計算結果を実行画面に表示させたくてFOR~NEXT文でいろいろ試しているのですがエラーが出てしまいます。他の具体的な方法が浮かばないです。初歩的な質問でしたら申し訳ないのですが、BASIC経験者、もしくは現在やられている方でどなたか私にアドバイスをしていただけると助かります。 (x^2-a=0のaの根を求めるニュートン法のプログラムです) 120 REM*******ニュートン・ラフソン法********* 130 FOR I = 1 TO 6 132 READ X0 134 GOSUB 140 136 NEXT I 138 END 140 PRINT "試行値は";X0 145 N=1 150 ER=.00001 180 FX=X0*X0-333 190 DFX=2*X0 200 X1=X0-FX/DFX 220 IF ABS(X1-X0)<ER THEN 250 230 X0=X1 :N=N+1 240 GOTO 180 250 PRINT X1,N 280 RETURN 300 REM *************試行値************* 310 DATA 1,5,10,50,100,500