下記のサイトに書かれている言語を今のバージョン(Visual Basic 2017)で使えるようにしたいです。
http://www.ritsumei.ac.jp/~hoshino/2002b/VB/VB00 …
ここに書かれているプログラムは流れるテロップを表示させるといったものですが、VariantをObjectに換えることはできました。ボタンのtrueとfalseの設定も上手くいきました。
ですが、テロップを流すところが上手くいきません。テロップが流れる速さ(文字/秒)を設定するところも上手くいきませんでした。
Private Sub cmdStart_Click()
Call TelopInit ' TelopInit() が呼ばれます。
pT = 1
cmdStop.Enabled = True
cmdStart.Enabled = False
cmdReStart.Enabled = False
Call TimerInit ' TimerInit() が呼ばれます。
End Sub
Private Sub TelopInit()
Dim a As Variant
' 全角スペースを先頭と終端に追加します。
text = String(tLen - 1, " ") + Text1.? + " "
len_text = Len(?) ' Len() は文字列の長さを調べます。
For i = 1 To len_text ' 行末の処理です。
a = Mid(text, i, 1) ' text の i 番目の文字を a に代入する。
If Asc(a) = 10 Or Asc(a) = 13 Then ' 行末ならば,
sa(i) = " " ' 全角スペースを sa(i) に代入する。
Else
sa(i) = a ' そうでなければ,a の値(文字)を代入する。
End If
Next i
End Sub
Private Sub Timer1_Timer()
Dim tBuff As Variant
For i = pT To pT + tLen - 1
If pT <= len_text Then
tBuff = tBuff + sa(?) ' tBuff に表示する文字列を貯えます。
End If
Next i
Label1.Caption = ?
pT = pT + 1 ' 1文字分 pT の値を進めます。
If (pT > Len(text)) Then ' 文字列をすべて表示したかどうかの判定
Beep
Timer1.Enabled = False
cmdStart.Enabled = True
cmdReStart.Enabled = False
cmdStop.Enabled = False
cmdClear.Enabled = True
Text1.Visible = ?
End If
End Sub
このプログラムを今のバージョンで運用できるようにするにはどうすればよろしいでしょうか。お願いいたします。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
このころのVBと、今のVBとは違い過ぎます。
これをどうやったら、等と中途半端なやり方では、なかなかできません。
(1) 元のプログラムがどんな原理で動いているのかを理解する
(2) 新しいVBを使って一から作る
の方がおそらく確実にできます。
いくつか助言するなら
> Option Base 1
現在、Option Baseは廃止されています。
配列は常に0から始まります。
1から始まるのを使いたかったら、自作します。
> Private Sub cmdStart_Click()
VB6までは、cmdStartをクリックしたら、 cmdStart_Click を実行する、となっていましたが、
VB.Net以降では、プロシージャ名と動作には直接関係はありません。
VB6のようにしたかったら、 Handlesを使うか、AddHandler を使います。
また、引数も決まった形のものになります。
ほかの 〜 _ 〜 プロシージャも同様。
> VariantをObjectに換えることはできました
これは、元のプログラムが謎。
文字列なのだから、Stringを使えばいいのに、何故variantなんだろう?
> ?
ところどころにある ? は、適切なものに置き換える必要があります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 2つのVBAを一緒にしたら機能しなくなりました(エクセル) 7 2022/06/02 12:41
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) 実行時エラー´5854´ 文字列型パラメーターが長すぎます。 3 2023/06/08 21:17
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) excel VBA if文について 3 2022/03/27 17:42
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
sublimit textっていうエディタ...
-
【VBS】クリップボード操作につ...
-
助けてください!
-
XMLファイルのattribute値がう...
-
演奏記号の・・・・
-
三項でたとえば交換って
-
他のフォームから別のフォーム...
-
C言語のOpenGLで複数のテクスチ...
-
VB.NETでのイベントの途中終了
-
VS CodeでTEXファイルにPDF形式...
-
VBAでcallで呼び出したsubを終...
-
再帰呼び出し
-
エクセルVBAでテキストボッ...
-
タイムアウトする仕組みを作りたい
-
Excel ユーザーフォームで計算 ...
-
【VB6.0】 あるフォームから他...
-
C#のループでtextboxに値を入れ...
-
C言語のサフィックスについて
-
VB.NETのテキストボックスで、...
-
こうもりの撃退法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
sublimit textっていうエディタ...
-
ExcelのVBAで文章にある複数の...
-
テキストボックスかラベル上の...
-
【VBS】クリップボード操作につ...
-
RichTextBoxで指定行の色を自動...
-
vba 日本語以外を抽出について
-
文字列を配列に…。
-
Pythonのre.split()の正規表現...
-
VBスクリプトでファイルのコピ...
-
文字列を日付型情報として計算...
-
VB6.0 sp5]テキストボックスと...
-
XMLファイルのattribute値がう...
-
VBScript、ClipboardDataオブジ...
-
助けてください!
-
Googleシート「A1」でなくて「A...
-
HTMLのデータ読み取り
-
Visual Basicについてお聞きし...
-
[VB6] SQLの作成について
-
perlによるxmlファイルの取得
-
表の文字の均等割りについて
おすすめ情報