Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2019)
分岐方法
投稿日時: 23/05/10 13:51:10
投稿者: TomVla

以下はN-BASICのプログラムをベースにしたものでFractalの描画です。
このままではコンパイルエラーになり動作しません。
解決方法についてご相談お願いします。
 
1.下記プログラムで動作させると、以下の2行のみ赤文字になります。
他の行番号付きラインは赤文字表示になっていません。
>60 X=ZX:Y=ZY:IF X^2+Y^2>10 THEN *P
>80 *P :IF L<100 THEN 100
このまま進めると「コンパイルエラー」です。
 
2.http://officetanaka.net/excel/vba/statement/Goto.htm
によれば
>Goto line
>lineには、分岐先の行ラベルまたは行番号を指定します。
とありますので
「*p」を「GoTo Sub1」としてみると赤文字表示はなくなりますが「コンパイルエラー」です。
 
この状態で10〜100の行番号をはずしてみても「コンパイルエラー」です。
-----------------------------------------------------
Sub test()
    Dim x&, y&, i&
    Dim zx#, zy#, cx#, cy#, xt#
    Dim rng As Range
     
    Set rng = [A1].Resize(200, 200)
    rng.EntireColumn.ColumnWidth = 0.4
    rng.EntireRow.RowHeight = 5#
 
10 FOR I=-199 TO +199: U=2*I/100
20 FOR J=-199 TO +199: V=2*J/100
30 X=0 :Y=0 : FOR L=1 TO 100
40     ZX=X^2-Y^2 + U
50 ZY=2*X*Y + V
60 X=ZX:Y=ZY:IF X^2+Y^2>10 THEN *P
70     NEXT L
80 *P :IF L<100 THEN 100
90     PSET (320+I,200-J), 7
100 NEXT J,I
 
    Application.Goto [A38], True
End Sub
-----------------------------------------------------

回答
投稿日時: 23/05/10 15:03:15
投稿者: Suzu

引用:
以下はN-BASICのプログラムをベースにしたもの

 
ベース と 言いますか。。
ラインナンバーの入っている N-BASICの部分はそのままコピペなのではありませんか?
 
構文が違うので、エラーになって当然でしょう。
 
調べてみると
 
N88-BASIC(86) 命令・関数一覧
http://radioc.web.fc2.com/column/pc98bas/n88func/n88funclist.htm
 
引用:
IF...THEN...ELSE IF...GOTO...ELSE
機能
論理式の条件判断を行う
書式
IF 論理式 [THEN 文/行番号]/[GOTO 行番号] [ELSE 文/行番号]

 
となっていますから、
 
Then の後 の *P や 100 が 行番号を指し、その行に 飛びなさい と言う命令の様ですね。
 
その部分を、VBA の命令に置き換えましょう。

回答
投稿日時: 23/05/10 15:26:12
投稿者: simple

ご指摘のとおりかと思います。PSETも使えませんよ。
 
大昔のプログラム言語の話題はExcelVBAの質問とは言えないと思います。
別のところでお願いします。「プログラミング」フォーラムとか。
同好の士がいるかもしれません。いないかもw。
 
ちなみに、前スレッドでの参照されたサイトを見たら、
ズームを10%程度にしてとか書かれていますね。
行高、列幅の調整は不要だったようです。

投稿日時: 23/05/11 07:26:59
投稿者: TomVla

 Suzuさん simpleさん
ご指摘ありがとうございます。
解決してませんが、本件一旦クローズして仕切り直しいたします。
変な質問をして失礼しました。今後ともよろしくお願いします。