
下記のサイトに書かれている言語を今のバージョン(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ランキング
-
テキストボックスかラベル上の...
-
ExcelのVBAで文章にある複数の...
-
XMLファイルのattribute値がう...
-
vba 日本語以外を抽出について
-
アクセスのフィールドに値をペ...
-
[VB6] SQLの作成について
-
VBAで入力数値について
-
レコードセットにnullの場合
-
【VB.NET】テキストボックスに...
-
C#のループでtextboxに値を入れ...
-
VB.NETでのイベントの途中終了
-
C言語のサフィックスについて
-
アクセスできない保護レベルエ...
-
subsequentとnextの違いってな...
-
【VB6.0】 あるフォームから他...
-
複数条件のオートフィルタ(VBA)
-
String型の値にスラッシュをつ...
-
キャッシュを無効に
-
ClickとChangeイベントの違いは...
-
文字列を繰り返して表示する VBA
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テキストボックスかラベル上の...
-
ExcelのVBAで文章にある複数の...
-
vba 日本語以外を抽出について
-
Dreamweaverにて金額にカンマと...
-
XMLファイルのattribute値がう...
-
【VBS】クリップボード操作につ...
-
文字をアクティブにする方法
-
VBAの文字列で「"」を識別したい。
-
MATLABでのデータ処理に関して
-
円頓章を現代語訳して下さい。
-
C++言語、国際符号翻訳プログラ...
-
アクセスのフィールドに値をペ...
-
Googleシート「A1」でなくて「A...
-
助けてください!
-
図の様な枠線の引き方を教えて...
-
[VB2010]関数・代入が順序正し...
-
TextAreaのinsert
-
フォーム、サブフォーム間のデ...
-
TextBox内の特定文字の数を数え...
-
サクラのサーバーについて教え...
おすすめ情報