
下記のサイトに書かれている言語を今のバージョン(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ランキング
-
DTPicker テキストクリアの方法
-
フォーム、サブフォーム間のデ...
-
VB.NETでのイベントの途中終了
-
GetNextWindowがDLLファイルUse...
-
VBA public変数はどのようなこ...
-
他のフォームから別のフォーム...
-
VBAとVB6.0とC#の速度比較
-
16進数
-
ユーザーフォームへのデータ入...
-
プロシージャまたは関数の引数...
-
コンボボックスからテキストボ...
-
【VB.NET】テキストボックスに...
-
ボールが壁に当たって跳ね返る...
-
カラーの16進表記の足し算
-
#define hoge long longって正...
-
Functionの戻り値を配列にした...
-
Excel VBA: private sub 内の...
-
タイムアウトする仕組みを作りたい
-
ピッ、ってアルファベットでど...
-
VBによる回帰直線のプログラム
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスかラベル上の...
-
ExcelのVBAで文章にある複数の...
-
vba 日本語以外を抽出について
-
助けてください!
-
Visual Basicについてお聞きし...
-
VB2010 シリアル通信の文字列...
-
cshスクリプト内での”ヒアドキ...
-
VB.NET コンボボックスからのit...
-
XMLファイルのattribute値がう...
-
アクセスのフィールドに値をペ...
-
ボールの動きがスムーズに動い...
-
[VB6] SQLの作成について
-
VB6.0 sp5]テキストボックスと...
-
C++言語、国際符号翻訳プログラ...
-
vc++のAPI(dll)の引数をVBAでう...
-
【VBS】クリップボード操作につ...
-
LOTUS-123のユーザーフォームに...
-
Docmd.Openreportで範囲印刷を...
-
円頓章を現代語訳して下さい。
-
VBScript、ClipboardDataオブジ...
おすすめ情報