Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Excel 2016)
一セルに一列の文字列があるとき、任意の文字列をそのセルを2セルに分ける方法
投稿日時: 19/02/27 10:56:30
投稿者: sssks

 
例えば下記文字列がA1セルにあった場合
 
この 32 ビット時代、バイナリデータは ASCII 表現のほうが小さくなることが多い。・・・・・
 
マウスで
表現のほうが小さくなることが多い。・・・・・
を指定して、cutし、セルA2にペーストする 方法て
 
作業的には、セルA1の
表現のほうが小さくなることが多い。・・・・・
を指定して、cutし、セルA2にペーストする のですが、
 
任意の文字列指定して、cut(ハサミのマークをクリック)し、セルA2にペーストする は、
 
Sub enter()
 ActiveCell.Offset(1, 0).Activate
   ActiveSheet.Paste
End Sub
でできますが、任意の
表現のほうが小さくなることが多い。・・・・・
を指定した時に、cut(ハサミのマークをクリック)するvbaがわかりません。
 
 

回答
投稿日時: 19/02/27 13:53:09
投稿者: sk

引用:
マウスで
表現のほうが小さくなることが多い。・・・・・
指定して、cutし、セルA2にペーストする 方法て

引用:
任意の
表現のほうが小さくなることが多い。・・・・・
を指定した時に
、cut(ハサミのマークをクリック)するvba

「アクティブセルが編集モードになっている状態で
そのセルのテキストの一部を範囲選択する」という意味で
「指定」という表現を用いられているのであれば、
「アクティブセルが編集モードになっている状態から
マクロを起動することは出来ないので無理である」
というのが今のところの回答となります。

回答
投稿日時: 19/02/27 13:53:44
投稿者: Suzu

切り取り の部分を自動記録を行っても
ActiveCell.FormulaR1C1 = "切り取り後の文字列"
となっているだけで、
 
セルを編集モードにして、文字列中の選択した部分をVBAで取得する方法が見当たりません。
 
良く調べれば見つかるかもしれませんが。。
私には見つけることができませんでした。
 
 
 
希望の動作をするマクロがあったとして、そのマクロの発動条件をどうされるのでしょうか?
リボンにボタンを配置するのでしょうか?
それとも、右クリックメニュー?
あるいはショートカットキー?
 
 
文字列を選択し、マクロを実行する事で
1.選択文字列を切り取り (Ctr+X)
2.切り取り確定、一つ下のセルへ移動 (Enter)
2.セルに切り取った内容を張り付け (Ctr+V)
 
Enter と、Ctl+V の二手間が惜しいという事でしょうか?

回答
投稿日時: 19/02/27 14:49:21
投稿者: WinArrow
投稿者のウェブサイトに移動

ユーザーフォームを使用する方法を提案します。
 
シートモジュールに
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    UserForm1.Show
    Cancel = True
End Sub
 
ユーザーフォームモジュールに
Private Sub TextBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    With Me.TextBox1
        Selection.Offset(1).Value = Mid$(.Text, .SelStart)
        Selection.Value = Left(.Text, .SelStart - 1)
         
    End With
     
    Cancel = True
     
    Unload Me
End Sub
 
Private Sub UserForm_Initialize()
    Me.TextBox1.Text = Selection.Text
End Sub

回答
投稿日時: 19/02/27 21:57:44
投稿者: VBA-stepup

代替え案です。
分割したい位置に『<』を入力
(入力文字列に使用されていない記号)
 
シートモジュールに

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim temp As Variant
    
    If Target.Column > 1 Then Exit Sub
    temp = Target.Value
    If InStr(temp, "<") > 0 Then
        Target.Value = Mid(temp, 1, InStr(temp, "<") - 1)
        Target.Offset(0, 1).Value = Mid(temp, InStr(temp, "<") + 1, Len(temp))
    End If
End Sub

マーキング記号は適時変更して下さい。
空白の処理も必要であれば追加して下さい。

投稿日時: 19/02/28 01:15:56
投稿者: sssks

Suzu さんの引用:
切り取り の部分を自動記録を行っても
ActiveCell.FormulaR1C1 = "切り取り後の文字列"
となっているだけで、
 
セルを編集モードにして、文字列中の選択した部分をVBAで取得する方法が見当たりません。
 
良く調べれば見つかるかもしれませんが。。
私には見つけることができませんでした。
 
 
 
希望の動作をするマクロがあったとして、そのマクロの発動条件をどうされるのでしょうか?
リボンにボタンを配置するのでしょうか?
それとも、右クリックメニュー?
あるいはショートカットキー?
 
 
文字列を選択し、マクロを実行する事で
1.選択文字列を切り取り (Ctr+X)
2.切り取り確定、一つ下のセルへ移動 (Enter)
2.セルに切り取った内容を張り付け (Ctr+V)
 
Enter と、Ctl+V の二手間が惜しいという事でしょうか?