
エクセルの挿入から作成できる縦書きテキストボックスなんですが、書式などそのままで文字だけ編集がしたいです。
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通りのサンプルです。

回答ありがとうございます!
きっと素敵な手段なんでしょうが、後半難しくて頭が付いていかず……前半は試したら思い通りの形になりました!
補足を追加させていただいたのですが、こちらはできたりしますでしょうか。。
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も見ています
-
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
テキストボックス中の文字列の色を変更する方法は?
Excel(エクセル)
-
-
4
VBからエクセルのテキストボックスの名称を取得したい
Visual Basic(VBA)
-
5
VBAのテキストボックスに文字列を貼り付ける方法
Access(アクセス)
-
6
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
7
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
8
パワーポイントのVBAでテキストボックスに値を変更させたいです
Visual Basic(VBA)
-
9
エクセルVBAでテキストボックスの値の取得と変更について
Visual Basic(VBA)
-
10
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
11
EXCEL VBA テキストボックスの文字で置換したい
Excel(エクセル)
-
12
エクセルVBAで、MsgBox やInputBox は、画面の中央以外に表示させたい。
Excel(エクセル)
-
13
テキストボックスの文字列を置換するコードを教えてください
Visual Basic(VBA)
-
14
excel vba でユーザーフォーム入力ができない
Visual Basic(VBA)
-
15
TextBoxから数字が文字として入力される?
Visual Basic(VBA)
-
16
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
17
EXCEL VBA で指定した範囲に入力があるかどうか?
Visual Basic(VBA)
-
18
フォームのテキストボックスの値をコピーしたい
Excel(エクセル)
-
19
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
20
コンボボックスからテキストボックスに連続して値を出したい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】シートの変数へ入れ...
-
【マクロ】並び替えの範囲が、...
-
【マクロ】売上一覧YYYYMMDDHHS...
-
質問58753 このコードでうまく...
-
【マクロ】開いているブックの...
-
エクセルのマクロについて教え...
-
改行文字「vbCrLf」とは
-
testファイル内にある複数のpng...
-
エクセルVBA 検索結果を隣のシ...
-
以下のプログラムの実行結果は...
-
Vba セルの4辺について罫線が有...
-
エクセルのVBAコードについて教...
-
VBAの質問(Msgboxについて)です
-
Excelのマクロについて教えてく...
-
エクセルのVBAコードについて教...
-
Excelのマクロについて教えてく...
-
VBAでユーザーフォームを指定回...
-
vbsでのwebフォームへの入力制限?
-
エクセルの改行について
-
vb.net(vs2022)のtextboxのデザ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
testファイル内にある複数のpng...
-
改行文字「vbCrLf」とは
-
エクセルVBA 検索結果を隣のシ...
-
vb.net(vs2022)のtextboxのデザ...
-
エクセルのVBAコードと数式につ...
-
【マクロ】切取りの場合、形式...
-
【ExcelVBA】5万行以上のデー...
-
ExcelVBAでパワポを操作したい
-
(EXCEL超初心者)EXCELの関数(ま...
-
エクセルの改行について
-
Excelマクロで使うVBAコードを...
-
ワードの図形にマクロを登録で...
-
【マクロ】変数を使った、文字...
-
VBAでFOR NEXT分を Application...
-
VBAの質問(Msgboxについて)です
-
エクセルのVBAコードについて教...
-
Excelマクロで使うVBAコードを...
-
Excelのマクロについて教えてく...
-
VBAの「To」という語句について
-
【マクロ】値を渡されたプロシ...
おすすめ情報
回答くださった方ありがとうございます!
追加でですが、入力した文字を改行したい場合は入力時にスペースを入れて調節するしかないでしょうか?
基本的に佐藤や工藤など名字なのですが、会社名で長い文字を入ラ
途中で送ってしまいました。笑
会社名で長い文字を入力したい場合、テキストボックスのサイズに合わせて改行して綺麗に収めたいのですが、それは入力後に調節する以外に方法はないものでしょうか……?