EXCELでマクロを作成しています
ユーザーフォームを使用し、コンボボックスでセルを選択し、その選択したセルにテキストボックスから文字を入力できるようになっています。
選択したセルが空白ならそのままテキストボックスの文字を挿入し、
もし選択したセルにすでに文字が入力されている場合は、すでに入力されている文字+テキストボックスの文字、という風にしたいと思っています。
例:選択したセル 「ガソリン代」
テキストボックス「高速代」
→ 『ガソリン代高速代』
その次も同じセルを選択した場合
テキストボックス「電車代」
→ 『ガソリン代高速代電車代』
このような感じです。
文字をどこかに代入してテキストボックスの文字と&で結んで入れてやれば良いのかもしれませんがつまづいております。
ぜひ助けていただければうれしく思います
よろしくお願いします。
No.3ベストアンサー
- 回答日時:
#01です。
UserformにTextBox1(費目)とTextBox2(代金)とCommandButton1があるとします。費目はA1セルに、代金はB1セルに連結してゆくなら、こんな感じでしょうか。
Private Sub CommandButton1_Click()
Range("A1").Value = Range("A1").Value & TextBox1.Value
If Range("B1").HasFormula Then
Range("B1").FormulaLocal = Range("B1").FormulaLocal & "+" & TextBox2.Value
Else
Range("B1").FormulaLocal = "=" & TextBox2.Value
End If
End Sub
HasFormulaプロパティで「数式が入力されているか」を判断できます。数式がない場合は先頭に「=」をつけて数式にしています。
またTextBoxの値は文字列です。数字以外が入力されると式の答えは不正になりますからIsNumericなどを用いてチェックする方が良いでしょうね。
回答してくださりありがとうございます!
HasFormulaやFormulaLocalという文を知りませんでした。
回答してくださった内容をアレンジすることでやりたかったことができました。
感激です!
参考のために記載しておきます。
Private Sub CommandButton1_Click()
Dim ctrl As Control, tst1 As String, txt2 As String
Dim ws As Worksheet, r As Long, c As Long
Set ws = Sheets("sheet1")
For Each ctrl In Me.Controls
Select Case ctrl.Name
Case "ComboBox1", "ComboBox2", "TextBox1"
If Me.Controls(ctrl.Name).Value = "" Then
txt1 = txt1 & ctrl.Name & vbLf
Else
txt2 = txt2 & Me.Controls(ctrl.Name).Value & vbLf
End If
End Select
Next
If Len(txt1) > 0 Then
MsgBox "以下の値を入力してください" & vbLf & txt1, vbExclamation
Exit Sub
Else
ret = MsgBox("以下の値を入力します" & vbLf & txt2, vbOKCancel)
If ret <> vbOK Then Exit Sub
r = Me.ComboBox1.ListIndex + 5
c = Me.ComboBox2.ListIndex + 19
If ws.Cells(r, c).HasFormula Then
ws.Cells(r, c).FormulaLocal = ws.Cells(r, c).FormulaLocal & "+" & TextBox1.Value
Else
ws.Cells(r, c).FormulaLocal = "=" & TextBox1.Value
End If
If ws.Cells(r, 18) = 0 Then
ws.Cells(r, 18) = Me.TextBox2.Text
Else
ws.Cells(r, 18).Value = ws.Cells(r, 18).Value & "," & TextBox2.Value
End If
End If
Set ws = Nothing
End Sub
丁寧な回答をしてくださったzap35さんに感謝します。
ありがとうございました。
No.2
- 回答日時:
>&で結んで入れてやれば良いのかもしれませんがつまづいております
・・・
その通り。
どういう風にうまく行かないか書かずして質問にならにと思う。
具体例をあげて、補足すべき。
肝心なのはそれで、それより前は長々と質問に書く必要は無いぐらいだ、と思う。
この回答への補足
セルに既に入っていた文字と、テキストボックスの文字を連結してセルに表示させることは#1の方の回答で解決しました。
しかし、もじを連結させる方法が分かれば解決すると思っていた、数式を連結させるということができませんでした。
単に、セルに入力されていた数とテキストボックスに入力した数を足していくだけならできるのですが、式を残しながら3回以上連結していくことができません。
例:
=1と入っているセルに「1」をたすと「=1+1」とここまではできます。
このセルに「1」を足すと「=1+1+1」としたいのですが、「=2+1」となってしまいます。
このセルにさらに「1」を足すと「=1+1+1+1」としたいのですが、「=3+1」となってしまいます。
数式の答えとしては良いのですが、何と何を足してその数が出たのかをセルに残したいのです。
もしまだ説明不足の点があれば指摘してください。
よろしくお願いします。
No.1
- 回答日時:
文字を連結するのは簡単です
Range("A1").Value = Range("A1").Value & TextBox1.Value
のようにすればよいのですが
>コンボボックスでセルを選択し、その選択したセルにテキストボックスから
>文字を入力できるようになっています
コンボボックスでどのようにセルを選択させるのでしょうね?
もしコンボボックスの値が"A1"のようなセルアドレスなら
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Range(ComboBox1.Value).Value = Range(ComboBox1.Value).Value & TextBox1.Value
End Sub
でも良いかもしれません。ただしComboBox1の値が「空白」だと当然エラーになりますから、コンボボックスの値を先にチェックしなければなりませんよ
早速回答してくださりありがとうございます。
文字を連結させることはおっしゃるとおり質問したのが恥ずかしいくらい簡単にできました。ありがとうございます。
実は、文字が連結できれば解決するかと思って最初の質問には書かなかったのですが、セルの数式も連結したいのです。
ただ単に、セルの数を足していくだけならできるのですが、式を残しながら3回以上連結していくことができません。
=1と入っているセルに「1」をたすと「=1+1」とここまではできます。
このセルに「1」を足すと「=1+1+1」としたいのですが、「=2+1」となってしまいます。
答えとしては良いのですが、どのような計算で答えが出たのかをセルに残したいのです。
良い案があればそれも教えてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
見学に行くとしたら【天国】と【地獄】どっち?
みなさんは、一度だけ見学に行けるとしたら【天国】と【地獄】どちらに行きたいですか? 理由も聞きたいです。
-
【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
【お題】 『寿司』がテーマの本のタイトルを考えてください
-
今の日本に期待することはなんですか?
目まぐるしく、日本も世界も状況が変わる中、あなたが今の日本に期待することはなんですか?
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
集中するためにやっていること
家で仕事をしているのですが、布団をはじめ誘惑だらけでなかなか集中できません。
-
EXCEL VBAで、セルの文字列の前後に文字を入力する方法は?
その他(Microsoft Office)
-
ExcelVBAで選択したセルに頭に文字を追加するマクロ
Excel(エクセル)
-
エクセルVBAで、条件に一致するセルへ移動
Excel(エクセル)
-
-
4
マクロでExcelのセルに任意の文字列を追加するには?
Excel(エクセル)
-
5
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
6
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
7
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
8
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
9
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
10
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
11
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
12
VBAのコマンドボタンの文字列の改行方法は?
Visual Basic(VBA)
-
13
エクセルVBAで、MsgBox やInputBox は、画面の中央以外に表示させたい。
Excel(エクセル)
-
14
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
15
UserForm1.Showでエラーになります。
工学
-
16
ExcelのVBA。public変数の値が消える
Visual Basic(VBA)
-
17
数式による空白を無視して最終行を取得するマクロ
Excel(エクセル)
-
18
メッセージボックスに表示する文字を大きくしたい
Excel(エクセル)
-
19
i=cells(Rows.Count, 1)とi=cells(Rows.Count, 2)の違い
Visual Basic(VBA)
-
20
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・【大喜利】【投稿~1/31】『寿司』がテーマの本のタイトル
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
貼り付けで複数セルに貼り付けたい
-
【Excel】 セルの色での判断は...
-
エクセルで指定したセルのどれ...
-
excelの特定のセルの隣のセル指...
-
エクセルの一つのセルに複数の...
-
(Excel)数字記入セルの数値の後...
-
エクセル オートフィルタで絞...
-
セルをクリック⇒そのセルに入力...
-
対象セル内(複数)が埋まった...
-
Excel 例A(1+9) のように番地の...
-
Excel2003 の『コメント』の編...
-
数式を残したまま、別のセルに...
-
文字列として"(ダブルコーテー...
-
EXCEL VBA セルに既に入...
-
Excelでのコメント表示位置
-
【エクセル】IF関数 Aまたは...
-
ハイパーリンクの参照セルのズ...
-
Excelで、「特定のセル」に入力...
-
Excelで数式内の文字色を一部だ...
-
枠に収まらない文字を非表示に...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
貼り付けで複数セルに貼り付けたい
-
エクセルで指定したセルのどれ...
-
excelの特定のセルの隣のセル指...
-
Excelで数式内の文字色を一部だ...
-
枠に収まらない文字を非表示に...
-
【エクセル】IF関数 Aまたは...
-
セルをクリック⇒そのセルに入力...
-
【Excel】 セルの色での判断は...
-
エクセルの書式設定の表示形式...
-
Excelでのコメント表示位置
-
EXCEL VBA セルに既に入...
-
エクセルの一つのセルに複数の...
-
(Excel)数字記入セルの数値の後...
-
Excel 例A(1+9) のように番地の...
-
対象セル内(複数)が埋まった...
-
エクセルのセルの枠を超えて文...
-
エクセル 足して割る
-
エクセル オートフィルタで絞...
-
数式を残したまま、別のセルに...
-
エクセル セルの中に縦線が入っ...
おすすめ情報