Visual Basicに投稿されたコード一覧

Visual Basic AutoHotKeyで自動インデント

; 選択してからPauseキーを押す。(10行まで)
Pause::

	cb_bk = %ClipboardAll%

	Clipboard =
	Send, ^c
	ClipWait, 2

	Sleep, 100
	tmp = %Clipboard%
	tmp2 = `r`n

	; 改行しかなかったら終了
	if tmp = %tmp2%
	{
		content =
	} else if ErrorLevel <> 0
	{
		; Error
		content =
	} else {
		; 初期化
		OutputArray1 =
		OutputArray2 =
		OutputArray3 =
		OutputArray4 =
		OutputArray5 =
		OutputArray6 =
		OutputArray7 =
		OutputArray8 =
		OutputArray9 =
		OutputArray10 = 

		i := 1
		Loop 10{
			arrayOne%i% =
			i := i + 1
		}
		i := 1
		Loop 20{
			arrayTwo%i% =
			i := i + 1
		}
		i := 1
		Loop 20{
			arrayThree%i% =
			i := i + 1
		}
		i := 1
		Loop 20{
			arrayFour%i% =
			i := i + 1
		}
		i := 1
		Loop 20{
			arrayFive%i% =
			i := i + 1
		}
		i := 1
		Loop 20{
			arraySix%i% =
			i := i + 1
		}
		i := 1
		Loop 20{
			arraySeven%i% =
			i := i + 1
		}
		i := 1
		Loop 20{
			arrayEight%i% =
			i := i + 1
		}
		i := 1
		Loop 20{
			arrayNine%i% =
			i := i + 1
		}
		i := 1
		Loop 20{
			arrayTen%i% =
			i := i + 1
		} 

		; 改行記号で分割。\r\nで分割出来ないみたいなので\nで分割したあと、\rを削る。
		AutoTrim, off
		content = %Clipboard%
		Sleep, 50

		; 先頭が改行の場合は削り、あとで付け足す。
		tmp =
		StringGetPos, tmp, content, `r

		beginningOfLineIsReturn = 0
		if(tmp = 0) {
			StringReplace, content, content, `r`n,
			beginningOfLineIsReturn = 1
		}

		StringSplit, OutputArray, content, `n, `r

		; 10行以上だったら中止
		if (OutputArray0 > 10) {
			Clipboard = %cb_bk%
			MsgBox, ごめん10行くらいまでしか無理
			exit
		}

		; 二つ以上の空白があったら一旦一つにする。
		arrayOne   := RegExReplace( OutputArray1,  "( )+", " " )
		arrayTwo   := RegExReplace( OutputArray2,  "( )+", " " )
		arrayThree := RegExReplace( OutputArray3,  "( )+", " " )
		arrayFour  := RegExReplace( OutputArray4,  "( )+", " " )
		arrayFive  := RegExReplace( OutputArray5,  "( )+", " " )
		arraySix   := RegExReplace( OutputArray6,  "( )+", " " )
		arraySeven := RegExReplace( OutputArray7,  "( )+", " " )
		arrayEight := RegExReplace( OutputArray8,  "( )+", " " )
		arrayNine  := RegExReplace( OutputArray9,  "( )+", " " )
		arrayTen   := RegExReplace( OutputArray10, "( )+", " " )

		; 空白で分割。
		StringSplit, arrayOne,   arrayOne,   %A_Space%
		StringSplit, arrayTwo,   arrayTwo,   %A_Space%
		StringSplit, arrayThree, arrayThree, %A_Space%
		StringSplit, arrayFour,  arrayFour,  %A_Space%
		StringSplit, arrayFive,  arrayFive,  %A_Space%
		StringSplit, arraySix,   arraySix,   %A_Space%
		StringSplit, arraySeven, arraySeven, %A_Space%
		StringSplit, arrayEight, arrayEight, %A_Space%
		StringSplit, arrayNine,  arrayNine,  %A_Space%
		StringSplit, arrayTen,   arrayTen,   %A_Space%

		j := 1             ; 配列の添字
		k := arrayOne0 - 1 ; ループ回数
		Loop %k% {
			; 一番大きい文字列の長さを求める
			max := StrLen(arrayOne%j%)

			if( StrLen(arrayTwo%j%) > max ) {
				max := StrLen(arrayTwo%j%)
			}

			if( StrLen(arrayThree%j%) > max ) {
				max := StrLen(arrayThree%j%)
			}

			if( StrLen(arrayFour%j%) > max ) {
				max := StrLen(arrayFour%j%)
			}

			if( StrLen(arrayFive%j%) > max ) {
				max := StrLen(arrayFive%j%)
			}

			if( StrLen(arraySix%j%) > max ) {
				max := StrLen(arraySix%j%)
			}

			if( StrLen(arraySeven%j%) > max ) {
				max := StrLen(arraySeven%j%)
			}

			if( StrLen(arrayEight%j%) > max ) {
				max := StrLen(arrayEight%j%)
			}

			if( StrLen(arrayNine%j%) > max ) {
				max := StrLen(arrayNine%j%)
			}

			if( StrLen(arrayTen%j%) > max ) {
				max := StrLen(arrayTen%j%)
			}

			; 行末を半角空白に置換
			i := max - StrLen(arrayOne%j%)
			Loop %i% {

				arrayOne%j% := RegExReplace( arrayOne%j%, "$", " " )
			}

			i := max - StrLen(arrayTwo%j%)
			Loop %i% {

				arrayTwo%j% := RegExReplace( arrayTwo%j%, "$", " " )
			}

			i := max - StrLen(arrayThree%j%)
			Loop %i% {

				arrayThree%j% := RegExReplace( arrayThree%j%, "$", " " )
			}

			i := max - StrLen(arrayFour%j%)
			Loop %i% {

				arrayFour%j% := RegExReplace( arrayFour%j%, "$", " " )
			}

			i := max - StrLen(arrayFive%j%)
			Loop %i% {

				arrayFive%j% := RegExReplace( arrayFive%j%, "$", " " )
			}

			i := max - StrLen(arraySix%j%)
			Loop %i% {

				arraySix%j% := RegExReplace( arraySix%j%, "$", " " )
			}

			i := max - StrLen(arraySeven%j%)
			Loop %i% {

				arraySeven%j% := RegExReplace( arraySeven%j%, "$", " " )
			}

			i := max - StrLen(arrayEight%j%)
			Loop %i% {

				arrayEight%j% := RegExReplace( arrayEight%j%, "$", " " )
			}

			i := max - StrLen(arrayNine%j%)
			Loop %i% {

				arrayNine%j% := RegExReplace( arrayNine%j%, "$", " " )
			}

			i := max - StrLen(arrayTen%j%)
			Loop %i% {

				arrayTen%j% := RegExReplace( arrayTen%j%, "$", " " )
			}
			j := j + 1
		}

		; バッファに貼り付けて出力
		buff =
		i := 1
		Loop %arrayOne0% {
			if (i < arrayOne0) {
				buff := buff . arrayOne%i% . " "
			} else {
				buff := buff . arrayOne%i%
			}
			i := i + 1
		}
		buff := buff . "`r`n"

		if( OutputArray0 = 1 ) {
			Goto, hogehoge
		}

		i := 1
		Loop %arrayTwo0% {
			if (i < arrayOne0) {
				buff := buff . arrayTwo%i% . " "
			} else {
				buff := buff . arrayTwo%i%
			}
			i := i + 1
		}
		buff := buff . "`r`n"

		if( OutputArray0 = 2 ) {
			Goto, hogehoge
		}

		i := 1
		Loop %arrayThree0% {
			if (i < arrayOne0) {
				buff := buff . arrayThree%i% . " "
			} else {
				buff := buff . arrayThree%i%
			}
			i := i + 1
		}
		buff := buff . "`r`n"

		if( OutputArray0 = 3 ) {
			Goto, hogehoge
		}

		i := 1
		Loop %arrayFour0% {
			if (i < arrayOne0) {
				buff := buff . arrayFour%i% . " "
			} else {
				buff := buff . arrayFour%i%
			}
			i := i + 1
		}
		buff := buff . "`r`n"

		if( OutputArray0 = 4 ) {
			Goto, hogehoge
		}

		i := 1
		Loop %arrayFive0% {
			if (i < arrayOne0) {
				buff := buff . arrayFive%i% . " "
			} else {
				buff := buff . arrayFive%i%
			}
			i := i + 1
		}
		buff := buff . "`r`n"

		if( OutputArray0 = 5 ) {
			Goto, hogehoge
		}

		i := 1
		Loop %arraySix0% {
			if (i < arrayOne0) {
				buff := buff . arraySix%i% . " "
			} else {
				buff := buff . arraySix%i%
			}
			i := i + 1
		}
		buff := buff . "`r`n"

		if( OutputArray0 = 6 ) {
			Goto, hogehoge
		}

		i := 1
		Loop %arraySeven0% {
			if (i < arrayOne0) {
				buff := buff . arraySeven%i% . " "
			} else {
				buff := buff . arraySeven%i%
			}
			i := i + 1
		}
		buff := buff . "`r`n"

		if( OutputArray0 = 7 ) {
			Goto, hogehoge
		}

		i := 1
		Loop %arrayEight0% {
			if (i < arrayOne0) {
				buff := buff . arrayEight%i% . " "
			} else {
				buff := buff . arrayEight%i%
			}
			i := i + 1
		}
		buff := buff . "`r`n"

		if( OutputArray0 = 8 ) {
			Goto, hogehoge
		}

		i := 1
		Loop %arrayNine0% {
			if (i < arrayOne0) {
				buff := buff . arrayNine%i% . " "
			} else {
				buff := buff . arrayNine%i%
			}
			i := i + 1
		}
		buff := buff . "`r`n"

		if( OutputArray0 = 9 ) {
			Goto, hogehoge
		}

		i := 1
		Loop %arrayTen0% {
			if (i < arrayOne0) {
				buff := buff . arrayTen%i% . " "
			} else {
				buff := buff . arrayTen%i%
			}
			i := i + 1
		}
		buff := buff . "`r`n"

		hogehoge:

		if (beginningOfLineIsReturn = 1) {
			Clipboard = `r`n%buff%
		} else {
			Clipboard = %buff%
		}

		Sleep, 50
		Send, ^v
		Sleep, 50
	}	

Sleep, 200
Clipboard = %cb_bk%

return

Visual Basic AutoHotKeyで変数代入を自動インデント

Pause::
	cb_bk = %ClipboardAll%

	Clipboard =
	Send, ^c
	ClipWait, 2

	Sleep, 50
	tmp = %Clipboard%
	tmp2 = `r`n

	; 改行しかなかったら終了
	if tmp = %tmp2%
	{
		content =
	} else if ErrorLevel <> 0
	{
		; Error
		content =
	} else {
		; 改行記号で分割。\r\nで分割出来ないみたいなので\nで分割。\rは残る。あとで\n付け足す。
		AutoTrim, off
		content = %Clipboard%
		StringSplit, OutputArray, content, `n

		; 30行以上だったら中止
		if (OutputArray0 > 29) {
			Clipboard = %cb_bk%
			MsgBox, ごめん30行くらいまでしか無理
			exit
		}

		; 全部の行の【=】記号の位置を取得
		cnt := 1
		Loop 30 {
			StringGetPos, EQPos%cnt%, OutputArray%cnt%, =
			cnt := cnt + 1
			if ( OutputArray0 < cnt ) {
				break
			}
		}

		; 一番右側にある【=】記号の位置を取得
		cnt := 1
		max := 0
		Loop 30 {
			if (EQPos%cnt% > max) {
				max := EQPos%cnt%
			}
			cnt := cnt + 1
			if ( OutputArray0 < cnt ) {
				break
			}
		}

		; 一番右側にある【=】記号の位置に合わせて他の行でも右に移動
		cnt := 1
		Loop 30 {
			i := max - EQPos%cnt%
			Loop %i% {

				StringReplace, OutputArray%cnt%, OutputArray%cnt%, =, %A_Space%=
			}
			cnt := cnt + 1
			if ( OutputArray0 < cnt ) {
				break
			}
		}

		; 全部の行をバッファにまとめてクリップボードに貼り付け
		buff =
		cnt := 1
		Loop 30 {

			; 最後の行に【\r】記号があったら【\n】をつけたす。なかったら付けない。
			if (OutputArray0 == cnt) {
				StringGetPos, Decision, OutputArray%OutputArray0%, `r
				if ( Decision = -1 ) {
					buff := buff . OutputArray%cnt%
				} else {
					buff := buff . OutputArray%cnt% . "`n"
				}
			} else {
				buff := buff . OutputArray%cnt% . "`n"
			}

			cnt := cnt + 1
			if ( OutputArray0 < cnt ) {
				break
			}
		}

		Clipboard = %buff%

		Send, ^v
		Sleep, 20

	}
Sleep, 200
Clipboard = %cb_bk%

return

Visual Basic リージョン破棄

Public Sub DestroyHRgn(objForm As Form)

Dim lngRet As Long
Dim lngTmpRgn As Long

    'ダミーリージョン作成
    lngTmpRgn = CreateRectRgn(0&, 0&, 0&, 0&)
    If lngTmpRgn = 0& Then
        MsgBox "ダミーリージョンの作成に失敗しました" & vbCrLf & _
                GetErrorMsg(), vbCritical Or vbOKOnly
    Else
        '引数で指定されたウィンドウのリージョンを取得
        lngRet = GetWindowRgn(objForm.hWnd, lngTmpRgn)
        If lngRet <> ERROR Then
            'リージョン破棄
            lngRet = DeleteObject(lngTmpRgn)
            If lngRet = 0& Then
                MsgBox "リージョンの破棄に失敗しました" & vbCrLf & _
                        GetErrorMsg(), vbCritical Or vbOKOnly
            Else
                '正常終了
                Exit Sub
            End If
        Else
            MsgBox objForm.Name & "のリージョン取得に失敗しました" & vbCrLf & _
                    GetErrorMsg(), vbCritical Or vbOKOnly
        End If
        '正常に破棄できなかったので戻り値を見ずにダミーリージョンを破棄
        Call DeleteObject(lngTmpRgn)
    End If

End Sub

Visual Basic ちょっと

Sub yakusuu()

 Dim x As Long
 Dim i As Long
 Dim sum As Long
 Dim kosuu As Variant

 x = InputBox("正の整数を入力してください")
  For i = 1 To x
   If x Mod i = 0 Then
    sum = sum + i
    kosuu = kosuu + 1
  End If
  Next i

  Call MsgBox("約数の和は" & sum & "です")

  If kosuu = 2 Then
   Call MsgBox("素数です")
  Else
   Call MsgBox("約数の個数は" & kosuu & "です")
  End If
End Sub

Visual Basic N88 BASIC for 家電店

10 PRINT "HIT ANY KEY"
20 I$=INPUT$
30 IF I$="" THEN GOTO 20
40 BEEP
50 GOTO 40

よく投稿されているコード

タグ

最近投稿されたコード