• 締切済み

プログラムの意味を教えてください

ここで繰り返しについてのプログラムについて質問させていただいたものです。 いろんな方にプログラムについて教えていただきありがとうございました。コピーして貼り付けしてプログラムは完成したのですが、内容もわからないままとかいやなので下記に貼り付けしてあるプログラムを簡単にでもかまいませんので説明してほしいのです。内容を理解したうえで先に進みたいので是非わかる方よろしくお願いします。 Private Sub Command1_Click()   Label1.Caption = NumKanji(Text1.Text) End Sub Private Function NumKanji(ByVal Arg As String) As String   Dim Idx As Long   For Idx = 1& To 10&     Arg = Replace$(Arg, _       Mid$("1234567890", Idx, 1&), _       Mid$("一二三四五六七八九〇", Idx, 1&) _     )   Next   NumKanji = Arg End Function

みんなの回答

  • NYOI
  • ベストアンサー率58% (56/96)
回答No.1

Private Function NumKanji(ByVal Arg As String) As String   Dim Idx As Long   '文字の置換処理   'Replaceは文字を置換する関数   'Midは指定範囲の文字を取り出す関数   'Forで繰り返すことにより、"1"を"一"に置換、"2"を"二"に置換…   'といった処理が順になされる。   For Idx = 1& To 10&     Arg = Replace$(Arg, _       Mid$("1234567890", Idx, 1&), _       Mid$("一二三四五六七八九〇", Idx, 1&) _     )   Next   NumKanji = Arg End Function Forループ部分は分解すると Arg = Replace$(Arg, "1", "一") Arg = Replace$(Arg, "2", "二") … Arg = Replace$(Arg, "0", "〇") としているのと同じ。 ちなみに数値や関数についている記号についてですが、&はそれがLong型であることを示し、$はそれが文字型であることを示しています。

LOVExLESS
質問者

補足

丁寧な回答ありがとうございました。 おかげでなんとなくながらもどこでどんなことをやっているのかがわかりました。本当にありがとうございました。 これからもVisual Basicについて質問していくと思いますのでよかったらいろいろ教えていただけるとうれしいです。

関連するQ&A

  • プログラムについて

    今このようなプログラムを作っているのですが、わからなくて困っています。 Private Sub Command1_Click() Command1.Enabled = False 'タイマー無効 Text1.Text = GetSource() Command1.Enabled = True 'タイマー有効 Msg = "アドレスを入力して下さい" Title = "URL入力" Ret = InputBox(Msg, Title, "") End Sub Function GetSource() As String Dim strBuf As String Dim strURL As String strURL = "http://www.microsoft.com/japan/ms.htm" strBuf = Inet1.OpenURL(strURL) 'ファイル内容を取得 GetSource = strBuf End Function InputBoxにアドレスを書いてOKを押すと別ウィンドウでソースが表示されるプログラムを作りたいんです。お願いします。

  • フレーム分割のソース表示プログラムについて

    以前次のようなプログラムを作ったのですが、これはURLを入力するとブラウザのソースを表示するものなので、フレームによって分割されたページのソースはすべて表示させることができません。このプログラムに何か追加して分割されていてもソースが表示できるようにしたいのですが。新たにコマンドを作ってやるしかないのでしょうか?何かアドバイスお願いします。 Private Sub Command1_Click() Dim strUrl As String Dim strBuf As String Command1.Enabled = False strUrl = InputBox("URLを入力して下さい.") If (Len(strUrl) = 0) Then Exit Sub End If Command1.Enabled = True strBuf = Inet1.OpenURL(strUrl) Form2.Show Form2.Text1.Text = strBuf End Sub Function Getsource() As String Dim strBuf As String Dim strUrl As String Dim strUrl2 As String strBuf = Inet1.OpenURL(strUrl) 'ファイル内容を取得 strUrl2 = InStr(strBuf, "frame src=") If strUrl2 > 0 Then strUrl3 = Mid(strBuf, strUrl2, 100) strUrl4 = Mid(strUrl3, 1, l) Getsource = strBuf End Function

  • 0から12までの値nを入力し、nと階乗n!の値を表示しなさいという問題

    0から12までの値nを入力し、nと階乗n!の値を表示しなさいという問題ですが、一つの数字しか計算が出来ません 5と12の場合は String "5 12" から型 'Long' への変換は無効です。と出てきてしまいます。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim n As Long Dim f As Long n = CLng(TextBox1.Text) ←ここにエラーが出ます。 TextBox2.Text = CStr(Recur(n)) End Sub Public Function Recur(ByVal arg As Long) As Long If arg = 1 Then Recur = arg Exit Function End If Recur = arg * Recur(arg - 1) End Function End Class というプログラムです。分かる方よろしくお願いします。 実行エラーです。

  • vb6.0のプログラム

    今こんなプログラムを作っているのですがなぜか、足りない部分があると言われて困っております。 できれば教えてください。 図 ーーーーーーーーーーーーーーーー from ーーーーーーーーーーーーーーーー 残り30秒[ーーーーラベルーーーー] 000+000=000←(3つともlabel) □-------------------□←HScrollbar max100 min0 [コマンドボタン] [タイマー]←非表示 ーーーーーーーーーーーーーーーー コード Private intCount As Integer Private intSecond As Integer Private Sub cmdStart_Click() Dim intNum1 As Integer Dim intNum2 As Integer If cmdStart.Caption = "Start" Then intCount = 0 intSecond = 30 lblResult.Caption = "" cmdStart.Caption = "OK" tmrSecond.Enabled = True ElseIf cmdStart.Caption = "OK" Then If CInt(lblAnswer.Caption) = CInt(lblNum1.Caption) + CInt(lblNum2.Caption) Then lblResult.Caption = lblResult.Caption & "○" intCount = intCount + 1 Else lblResult.Caption = lblResult.Caption & "×" End If intNum1 = Rnd() * 50 intNum2 = Rnd() * 50 lblNum1.Caption = intNum1 lblNum2.Caption = intNum2 End If End Sub Private Sub hsbAnswer_Change() lblAnswer.Caption = hsbAnswer.Value End Sub Private Sub tmrSecond_Timer() intSecond = intSecond - 1 lblTime.Caption = "残り" & intSecond & "秒" If intSecond = 0 Then tmrSecond.Enabled = False MsgBox (intCount & "問正解") cmdStart.Caption = "Start" Else End If End Sub どうぞよろしくお願いします。

  • null除去、これで大丈夫ですか?

    function sanitize(&$arg){ if (is_array($arg)){ array_walk_recursive($arg,function(&$val,$key){if(is_string($val))$val=str_replace("\0", "", $val);}); }else{ if(is_string($arg))$arg=str_replace("\0", "", $arg); } return $arg; }

    • ベストアンサー
    • PHP
  • 0から12までの値nを入力し、nと階乗n!の値を表示しなさいという問題

    0から12までの値nを入力し、nと階乗n!の値を表示しなさいという問題です。 前にこのプログラムで複数個、同時には計算できない問題を自分で解決したのですがこんどは0が計算できないようです。 System.StackOverflowException' のハンドルされていない例外が WindowsApplication1.exe で発生しました。 とでます Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim n As Long Dim f As Long n = CLng(TextBox1.Text) TextBox2.Text = CStr(Recur(n)) End Sub Public Function Recur(ByVal arg As Long) As Long ←ここにエラーが If arg = 1 Then Recur = arg Exit Function End If Recur = arg * Recur(arg - 1) End Function End Class というプログラムです。分かる方よろしくお願いします。 実行エラーです。

  • VB2013でのプログラム作成でつまづきました

    初めまして ご質問です 会社にて、職場改善のため VB2013でプログラムを作成していますが PCに詳しいのが自分しかいなく、指名されました。。。 もちろん自作PCとか作れるぐらいですが プログラムなんてやったことないし困っています 職場にプログラム専門の方がいるので教育を受けていますが 2.3回教えてもらって  「windowsの電卓を作ろう」と言われました 電卓作成は、初心者用の題材らしいですが とりあえず教えてもらった事を駆使し まずは、テキストボックスとテキストボックスに数字を入れ その二つを +や-ボタンを押し =ボタンを押すと、3つ目のテキストボックスに表示させるという 簡単なプログラムは、なんとかできましたが windowsぽくすると 例 11 + 12 - 9 とテキストに表示され =ボタンを押すと 表示が消え 計算結果が表示されます いまの問題 ・整数と文字列を表示させ、計算だけさせる ・変数宣言、IF、Serectしか教わってない(それだけでできる言われた笑) ・まだ、いまいちわかっていないため 詳しく知りたい 無論、教えてもらったコードをそのまま使いたいわけじゃなく どーいう流れで、どーいう風にというのを理解したいです 結局は自分が理解して、少しずつやらないといけないので 詳しい方、教えてください。 現在なにもできてないコードです ここにどう埋めるか教えてほしいです ------------------------------------------------------------------------------ Option Explicit On Public Class Form Public oboe As String '押されたボタンが数値以外を覚える変数 Public befor As String '押されたボタンが数値の場合 覚える変数 Public anser As Integer ' 計算結果を保存する 変数 Public number As Integer '入力された数値を保存する 変数 Private Sub Form_Load(sender As Object, e As EventArgs) Handles MyBase.Load End Sub Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click '1 befor = "1" ans.Text &= "1" End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click '2 befor = "2" ans.Text &= "2" End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click '3 befor = "3" ans.Text &= "3" End Sub Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click 'たし算 oboe = "+" ans.Text &= "+" number = befor + ans.Text End Sub Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click '掛け算 End Sub Private Sub Button4_Click_1(sender As Object, e As EventArgs) Handles Button4.Click '計算 End Sub Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click 'CLEAR End Sub Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click '引き算 End Sub Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click '割り算 End Sub Private Sub ans_TextChanged(sender As Object, e As EventArgs) Handles ans.TextChanged

  • 保存の仕方

    こんにちは、次のようなアドレスを入力するとそのソースを表示するプログラムを作ったのですがこれで表示されるソースに名前を付けて保存することってできますか?お願いします。 Private Sub Command1_Click() Dim strUrl As String Dim strBuf As String Command1.Enabled = False strUrl = InputBox("URLを入力して下さい.") If (Len(strUrl) = 0) Then Exit Sub End If Command1.Enabled = True strBuf = Inet1.OpenURL(strUrl) Form2.Show Form2.Text1.Text = strBuf End Sub Function Getsource() As String Dim strBuf As String Dim strUrl As String strBuf = Inet1.OpenURL(strUrl) 'ファイル内容を取得 Getsource = strBuf End Function

  • ソース内の文字検索について

    下にHPのソースを表示させるプログラムがあります。 これで表示されたソースの中からある文字を検索したいのですが、それってできますか?どうしたらいいんでしょうか、お願いします。 Private Sub Command1_Click() Command1.Enabled = False Text1.Text = GetSource() Command1.Enabled = True End Sub Function GetSource() As String Dim strBuf As String Dim strURL As String strURL = "http://www.microsoft.com/japan/ms.htm" strBuf = Inet1.OpenURL(strURL) GetSource = strBuf End Function

  • 簡単なプログラムにまとめる方法

    前回、同じようなプログラムを簡単にまとめる方法を教えて頂いたのですが新しい事で困ってしまいました。 説明が非常にへたくそなので、プログラムをそのまま書きます・・・・ スイマセン Private Sub TextBox1_1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1_1.GotFocus Me.TextBoxNum.Text = "1" End Sub Private Sub TextBox2_1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox2_1.GotFocus Me.TextBoxNum.Text = "2" End Sub Private Sub TextBox3_1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox3_1.GotFocus Me.TextBoxNum.Text = "3" End Sub 上記のプログラム、TextBox○○○_1.KeyPressの○○○の部分が1から100まであるのですが、あまりにも行数が多くなって長くなるので、以下のプログラムで纏めたのですが、 Me.TextBoxNum.Text = "○○○" にフォーカスされたTextBox○○○_1の○○○を入れる方法はありますか? Private Sub TextBox1_1_GotFocus(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1_1.GotFocus,TextBox2_1.GotFocus,TextBox3_1.GotFocus Me.TextBoxNum.Text = "○○○" End Sub 説明が下手くそでスイマセン、ほかに新しい方法でも有ればお願いします よろしくお願いしますm(__)m