• ベストアンサー

ExcelVBAでセルを編集状態にする方法

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

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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 厳密に、「編集状態」=「入力待ち状態」から、編集をするマクロは、理論的にはありえないはずです。最初から、外部のプログラムに渡さないといけないわけですが、やったことはありません。たぶん、他のプログラムで出来るとは思いますが、ここで書いても評価されないでしょう。 単に、手動で入力待ちを解除してから、マクロを稼働させればよいだけなのですから。

di6351
質問者

お礼

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

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.2

文末に追加なら Range("A1").value = Range("A1").value & "***"

di6351
質問者

お礼

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

すると、全ての回答が全文表示されます。
  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

そういう操作はSendkeysで操作することになります。 Sub macro() Range("A1").Select Application.SendKeys "{F2}" ’1文字消す Application.SendKeys "{BS}" End Sub

di6351
質問者

お礼

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

すると、全ての回答が全文表示されます。

関連するQ&A