アプリ版:「スタンプのみでお礼する」機能のリリースについて

VBAを使ってセルを編集状態にするコードについてお聞きします。
Range("A1").Selectでセルを選択し、
Range("A1").value = "***"のように
文字を入力すると元々入力してあった文字が消えてしまいます。
入力してある文字列の文末を選択し、
次の文字列を入力するにはどのようにすればよいのでしょうか。
また、セルを編集状態にして、入力文字列の最後の1文字を消す方法を教えてください。
宜しくお願いします。

A 回答 (3件)

>セルを編集状態にして、入力文字列の最後の1文字を消す方法を教えてください。


言葉から判断すれば、VBA上ではないと思います。
「編集状態」というのは、セルが「入力待ち状態」の意味ですから、一旦、「編集状態」をオフにしないと、マクロ自体が動かないからです。

>Range("A1").Selectでセルを選択し、
Select は、別に、編集状態にはなっていません。

また、一般的なマクロでは、RangeオブジェクトをSelect をする必要はありません。
以下の場合は、直接、Range("A1") と指定すればよいのです。

'文字を付け足す
ActiveCell.Value = ActiveCell.Value & "***"

'最後の文字を消す
With ActiveCell
 If Len(.Value) > 0 Then
  .Value = Left(.Value, Len(.Value) - 1)
 End If
End With

厳密に、「編集状態」=「入力待ち状態」から、編集をするマクロは、理論的にはありえないはずです。最初から、外部のプログラムに渡さないといけないわけですが、やったことはありません。たぶん、他のプログラムで出来るとは思いますが、ここで書いても評価されないでしょう。

単に、手動で入力待ちを解除してから、マクロを稼働させればよいだけなのですから。
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
マクロ以外のExcel操作でも、編集状態にした時、他の操作が出来なくなる事はあったのですが、
コードを作るうえでも同じことが言えるのですね。
ActiveCell.Value = ActiveCell.Value & "***"でSelectを使うことなく、
入力する事が出来ました。

お礼日時:2013/11/19 12:18

文末に追加なら


Range("A1").value = Range("A1").value & "***"
    • good
    • 1
この回答へのお礼

ありがとうございます。
セルに続けて入力する文字を直接コードに追加する事が出来ました。
いろいろな単語を追加してみようと思います。

お礼日時:2013/11/19 12:00

そういう操作はSendkeysで操作することになります。



Sub macro()
Range("A1").Select
Application.SendKeys "{F2}"
’1文字消す
Application.SendKeys "{BS}"
End Sub
    • good
    • 3
この回答へのお礼

ご回答ありがとうございます。
SendKeysを使うことで、実際にキーを打った時と同じ動作をさせることが出来るのですね。
その他のFunctionKeyでも動作させる事が出来ました。
いろいろと応用してみようと思います。

お礼日時:2013/11/19 11:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A