![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
エクセルの挿入から作成できる縦書きテキストボックスなんですが、書式などそのままで文字だけ編集がしたいです。
inputboxのようなメッセージ画面に入力したものがテキストボックスに反映されたら1番理想ですが可能でしょうか?
不可能な場合、inputboxでセルP4に入力した文字をテキストボックスの書式そのままに反映させるでも大丈夫です。
ちなみに用途ですが、テキストボックスには最初から名字が入力されていて、田中や佐藤などとVBAを使用してテキストボックスに触らず編集するのに用いたいと思っており、もし可能であればinputboxに入力する際に新規入力ではなく入力してあるものの編集、ができたらなと……
VBAそこまで詳しくないのでコピペできるように書いて頂けたら幸いです。そしてinputboxしか知らないもので他に良い手段あればそれで書いて頂いても構いません。
テキストボックスはText Box 17 です。
何卒ご教示よろしくお願いします( *´ω`*)
No.6ベストアンサー
- 回答日時:
改行したいところで特定の文字(今回は「++」ですが自由に変更して下さい)を改行コードに変換する方法です。
ただし InputBox は1行しか表示できないので元々複数行が入っていると入力ミスになるかも?Sub sample()
Dim 戻り値 As Variant
ActiveSheet.Shapes("Text Box 17").Select
戻り値 = Application.InputBox(Prompt:="名前を入力してください。", Title:="名前編集", Default:=Selection.Text)
If Not 戻り値 = False Then
戻り値 = Replace(戻り値, "++", vbLf)
Selection.Text = 戻り値
End If
ActiveCell.Select
End Sub
ありがとうございます!
イメージしていた通りになり感動しました!なるほどこういうやり方があるのですね…すぐにお返事いただけたこともありベストアンサーとさせていただきます!ありがとうございました|・ω・*)
No.9
- 回答日時:
#7#8です。
またやらかしてしまいました。貴重な時間を使わせてしまったかもです。申し訳ございません。
ラベルは、入力できませんね。どうしてこのような回答をしたか、穴を掘って埋めたい気分です。
せっかくなので、TextBoxを使えば出来るので それを上げさせていただきます。
#5の②番目の例です。
#7で挙げた作り方でラベルを ab| テキストボックスに変えてUserFormを作成してください。#5の図のようになります。
作成されたUserForm上でダブルクリックして各コードをコピペしてください。
なお、テキストボックス内での改行はCtrl+Enterになります。
Private Sub UserForm_Initialize() 'UserForm表示される時にText Box 17の内容をUserFormのTextBox1に抽出します。
With TextBox1
.Text = ActiveSheet.TextBoxes("Text Box 17").Text
.MultiLine = True
End With
End Sub
Private Sub CommandButton1_Click() 'ボタンを押すとUserForm.TextBox1のテキストがText Box 17に入力されます。
ActiveSheet.TextBoxes("Text Box 17").Text = TextBox1.Text
End Sub
UserFormの表示方法は、
Sub sample()
UserForm1.Show
End Sub
#7#8を色々と検証されていたとしましたら、重ねてお詫びいたします。
申し訳ございませんでした。
たくさんありがとうございます!
いえいえ、試行錯誤してる時間も勉強になるので謝らないでください…!
難しいながらもやってみたらなんとなくわかってきました!こういうやり方もあるんですね…いやはや頭があがりません。いろいろ試してみようと思います!ありがとうございました|・ω・*)
No.8
- 回答日時:
追記:ユーザーフォーム、各コントロールのプロパティは、プロパティウインドウから行うかVBAから設定します。
色やフォント、サイズなどプロパティは沢山あるのでVBAラベルのプロパティなどで調べてください。
参考:VBAラベルのプロパティ https://kosapi.com/post-3506/
No.7
- 回答日時:
#5です。
やはり直接が良いような気がしますが、他のケースも考え作りました。この場合は、分かりにくいかもしれませんが、UserFormで行きます。可視的にもその方が良いと思います。
作り方、VBEを開き、挿入からユーザーフォームを押し作成します。サイズは適時変えてください。
作成出来たら、表示からツールボックスを押し、表示させます。
先ず、ツールボックスのコントロールの中から、A ラベルを押し 先ほどのユーザーフォーム上でテキストボックスを作るように作成します。
次にツールボックスからコマンドボタンを押し、同様にユーザーフォーム上に作成します。ここ迄出来れば、後はコードをコピペします。
#作成された各コントロールナンバーが1として示します。
Option Explicit
Private Sub CommandButton1_Click() 'ボタンを押すとUserForm.Label1のテキストがText Box 17に入力されます。
ActiveSheet.TextBoxes("Text Box 17").Text = Label1.Caption
Label1.Caption = ""
End Sub
Private Sub UserForm_Initialize() 'UserForm表示される時にText Box 17の内容をUserFormのLabel1に抽出します。
Label1.Caption = ActiveSheet.TextBoxes("Text Box 17").Text
End Sub
はじめは、ラベルにLabel1と表示されていますが、使用すると消えます。
ユーザーフォーム、コマンドボタンの表示文字は先の回答の図のように書き換えることも出来ます。
(書き換えは、各コントロールのCaptionプロパティです)
テキスト入力時の改行はShift+Enterで改行できます。入力時の文字がボタンを押すとText Box 17に入力されます。
UserFormの表示方法は、
Sub sample()
UserForm1.Show
End Sub
などで出来ます。
No.5
- 回答日時:
Inputbox なら
標準モジュールで
Option Explicit
Sub sample()
Dim strExist As String
strExist = ActiveSheet.TextBoxes("Text Box 17").Text
ActiveSheet.TextBoxes("Text Box 17").Text = strExist & InputBox("Text Box 17を編集します。")
End Sub
UserFormを作成した場合、Formモジュールに
CommandButton1とTextBox1、Label1を配置して画像の様に
Option Explicit
Private Sub UserForm_Initialize() ’UserForm表示される時にText Box 17の内容をUserFormのTextBox1に抽出します。
TextBox1.Text = ActiveSheet.TextBoxes("Text Box 17").Text
End Sub
Private Sub CommandButton1_Click() ’ボタンを押すとUserForm.TextBox1のテキストがText Box 17に入力されます。
ActiveSheet.TextBoxes("Text Box 17").Text = TextBox1.Text
End Sub
いずれにしても、入力作業が発せしますね。処理的にどうでしょうか?
>セルP4に入力した文字をテキストボックスの書式そのままに反映させる
こちらの方が、合理的な気がしますが、、、
下記の場合、Text Box 17の既存のテキストが入らないので工夫が必要です。
コードを書くのは、対象のシートモジュールです。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Address = "$P$4" Then
ActiveSheet.TextBoxes("Text Box 17").Text = Target.Value
End If
End Sub
以上 3通りのサンプルです。
![「VBAでテキストボックス内の編集をする方」の回答画像5](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/3/542917474_5defd8c8eb8e6/M.png)
回答ありがとうございます!
きっと素敵な手段なんでしょうが、後半難しくて頭が付いていかず……前半は試したら思い通りの形になりました!
補足を追加させていただいたのですが、こちらはできたりしますでしょうか。。
No.3
- 回答日時:
No.2 の訂正です
「選択状態にしないとテキストボックスの値を得る事が出来ない」は勘違いの様です。
「Shapes」を使ったのが悪かったようです「TextBoxes」なら可能でした。(hotosys 様 感謝)
Sub sample2()
Dim 戻り値 As Variant
戻り値 = Application.InputBox(Prompt:="名前を入力してください。", Title:="名前編集", Default:=ActiveSheet.TextBoxes("Text Box 17").Text)
If Not 戻り値 = False Then ActiveSheet.TextBoxes("Text Box 17").Text = 戻り値
End Sub
No.2
- 回答日時:
もしかしたらこんな事でしょうか?
Sub sample()
Dim 戻り値 As Variant
ActiveSheet.Shapes("Text Box 17").Select
戻り値 = Application.InputBox(Prompt:="名前を入力してください。", Title:="名前編集", Default:=Selection.Text)
If Not 戻り値 = False Then Selection.Text = 戻り値
ActiveCell.Select
End Sub
※ 動作しないようでしたら「Text Box 17」を「TextBox 17」にしてみて下さい(何もしなければ「Text」と「Box」の間にスペースは入らないので…)
※ 選択状態にしないとテキストボックスの値を得る事が出来ないので、最後にアクティブセルを選択してごまかしています。
※「Title:="名前編集",」は省いても問題ありません。(省くときは終わりの「,」も省くのを忘れないように)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Access IF文でテーブルに存在しない場合の処理について 2 2022/10/10 18:09
- PDF PDFのテキストを追加機能 1 2022/06/18 12:45
- Visual Basic(VBA) Vba テキストボックスの文字列をボタンで入力するとテキストボックスの端の文字列が更新されない 2 2022/05/21 23:32
- Access(アクセス) capeofdragonと申します。 Access2016を使っております。 あるフォームがあり、テ 2 2022/09/09 13:18
- その他(Microsoft Office) パワーポイントやワード、エクセルでのスライドショーやテキストの微調整について 1 2023/01/12 05:50
- PowerPoint(パワーポイント) PowerPoint2007を使用しています。 図を挿入し、その上にテキストボックスで文字入れをした 2 2023/07/13 08:35
- Visual Basic(VBA) Application.InputBoxの表示形式 2 2022/08/09 22:32
- Visual Basic(VBA) WordのVBAについて 5 2023/01/11 14:38
- Excel(エクセル) エクセルにて別シートの値を参照したif式で任意のセルと同じ値を結果に反映させたいです 3 2022/06/02 11:34
- その他(パソコン・スマホ・電化製品) ワードでテキストボックス内の文字を連動させない方法 2 2023/02/09 16:56
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
エクセルVBAでテキストボックスの値の取得と変更について
Visual Basic(VBA)
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
-
4
EXCEL VBAについて、ワークシート上に置いたTextBoxに値を入れる方法について
Excel(エクセル)
-
5
VBAのテキストボックスに文字列を貼り付ける方法
Access(アクセス)
-
6
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
7
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
8
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
9
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
10
ユーザーフォームのテキストボックスに前回入力した値を表示する Excel
Visual Basic(VBA)
-
11
パワーポイントのVBAでテキストボックスに値を変更させたいです
Visual Basic(VBA)
-
12
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
13
VBA フォームのテキストボックスにセルの値を表示させたいが改行していたら改行もあわせて表示させたい
Excel(エクセル)
-
14
テキストボックスの文字列を置換するコードを教えてください
Visual Basic(VBA)
-
15
任意で選択したセルをテキストボックスに表示
Excel(エクセル)
-
16
VBからエクセルのテキストボックスの名称を取得したい
Visual Basic(VBA)
-
17
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
18
ExcelVBAでテキストボックスの表示形式を小数点第二位まで表示する方法
Visual Basic(VBA)
-
19
エクセルでエラーが出て困っています。
Excel(エクセル)
-
20
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
X(旧ツイッター)からバスワー...
-
パソコンに詳しい方教えて下さ...
-
パワポで曲がった両矢印の簡単...
-
「オプション機能」が無くなった
-
Windowsのパソコンを初期化する...
-
CSVファイルで誤って上書き保存...
-
Windows11 右、左クリックで何...
-
遠隔地のPCを操作したい
-
Excelデータをコピペして、ペー...
-
Yahoo!メールなのですが、1日に...
-
Windows11のデスクトップアイコ...
-
【スプレドシート】IMPORTRANGE...
-
「生産性ソフトウェア」とは何...
-
Access レポート印刷するときに...
-
IME関係
-
「.movpkg」「.m3u8」ファイル...
-
スプレッドシート、Excelでの数...
-
onenote内でこんな感じで黄緑に...
-
vba アクティブシートの名前変...
-
Excelのマクロについて教えてく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで大量のファイルをシート名...
-
VBA レジストリの値の読み方に...
-
Excelのマクロについて教えてく...
-
ユーザーフォームに別シートか...
-
VBAの計算で@が出てしまう件
-
エクセルVBAについて
-
Vba 実数および実数タイプの変...
-
【ExcelVBA】値を変更しながら...
-
VBA一覧取得 再投稿
-
VBA指定行削除
-
エクセルVBAについて
-
VBA ユーザーフォーム ボタンク...
-
VBA 何かしら文字が入っていたら
-
エクセルについて
-
2つのマクロでチェックボックス...
-
【マクロ】1つのマクロの中に...
-
ExcelのVBAコードについて教え...
-
VB.net(VB)で、フォームにExcel...
-
Vba SelStart、SelLen教えてく...
-
Excel-VBAのmsgBox()の不思議
おすすめ情報
回答くださった方ありがとうございます!
追加でですが、入力した文字を改行したい場合は入力時にスペースを入れて調節するしかないでしょうか?
基本的に佐藤や工藤など名字なのですが、会社名で長い文字を入ラ
途中で送ってしまいました。笑
会社名で長い文字を入力したい場合、テキストボックスのサイズに合わせて改行して綺麗に収めたいのですが、それは入力後に調節する以外に方法はないものでしょうか……?