指定位置に文字を挿入するマクロ(ランチャー4)
2021年03月20日
前回、Mid関数で文字を切り出すマクロを作った。
文字の挿入も指定位置でできた方がいいなってことで作ってみた。
今回は、新しいことは何もないので、詳細省略。
ブログに公開するタイミングでバグが見つかる。。。
ユーザーフォームで入力箇所を数値指定して、
テキストボックスに入力した文字を挿入する。
ダウンロード
以下、ソース
文字の挿入も指定位置でできた方がいいなってことで作ってみた。
今回は、新しいことは何もないので、詳細省略。
ブログに公開するタイミングでバグが見つかる。。。
ユーザーフォームで入力箇所を数値指定して、
テキストボックスに入力した文字を挿入する。
ダウンロード
以下、ソース
Sub strInsertMain(iPos As Long, iText As String)
Dim r As Range, cnt As Long
For Each r In Selection
cnt = cnt + 1
If Left(r.Formula, 1) <> "=" Then
r.Value = Replace(r.Value, Left(r.Value, iPos), Left(r.Value, iPos) & Replace(iText, "\n", cnt))
End If
Next r
End Sub
Private Sub CommandButton1_Click()
Unload Me
End Sub
Private Sub CommandButton2_Click()
Unload Me
If iText <> "" Then
If iPos <> 0 Or iPos <> "" Then
Call strAddMain(iText, "")
Else
Call strInsertMain(iPos, iText)
End If
End If
End Sub
Private Sub iPos_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Select Case KeyCode
Case vbKeyReturn, vbKeyBack, vbKeyDelete, vbKeyTab
Case vbKey0, vbKey1, vbKey2, vbKey3, vbKey4, vbKey5, vbKey6, vbKey7, vbKey8, vbKey9
Case vbKeyNumpad0, vbKeyNumpad1, vbKeyNumpad2, vbKeyNumpad3, vbKeyNumpad4, vbKeyNumpad5, vbKeyNumpad6, vbKeyNumpad7, vbKeyNumpad8, vbKeyNumpad9
Case vbKeyLeft, vbKeyRight
Case vbKeyUp
If iPos = "" Then
iPos = 1
Else
iPos.Value = iPos + 1
End If
Case vbKeyDown
If iPos <> "" And iPos <> 0 Then
iPos.Value = iPos - 1
End If
KeyCode = 0
Case vbKeyEscape
Case Else
KeyCode = 0
End Select
End Sub
Private Sub iPos_change()
If Left(Selection(1).Formula, 1) <> "=" Then
If iPos.Value = "" Or Val(iPos.Value) < 2 Then
SampleText.Caption = iText.Value & Selection(1).Value
Else
SampleText.Caption = Left(Selection(1).Value, Val(iPos.Value) - 1) & iText.Value & Right(Selection(1).Value, Len(Selection(1).Value) - Val(iPos.Value) + 1)
End If
End If
End Sub
Private Sub iText_Change()
If Left(Selection(1).Formula, 1) <> "=" Then
If iPos.Value = "" Or Val(iPos.Value) < 2 Then
SampleText.Caption = iText.Value & Selection(1).Value
Else
SampleText.Caption = Left(Selection(1).Value, Val(iPos.Value) - 1) & iText.Value & Right(Selection(1).Value, Len(Selection(1).Value) - Val(iPos.Value) + 1)
End If
End If
End Sub
PR
Comment