• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL VBA セルに既に入力されている文字に文字を追加する)

EXCEL VBAでセルに文字を追加する方法

このQ&Aのポイント
  • EXCELのマクロを使用して、既に入力されているセルに文字を追加する方法について教えてください。
  • ユーザーフォームを使ってセルを選択し、テキストボックスから文字を入力できるようにする方法についても教えてください。
  • 空白のセルにはテキストボックスの文字を挿入し、既に文字が入力されているセルには既存の文字にテキストボックスの文字を追加する方法を教えてください。

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答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などを用いてチェックする方が良いでしょうね。

hiro_ele
質問者

お礼

回答してくださりありがとうございます! 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さんに感謝します。 ありがとうございました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

>&で結んで入れてやれば良いのかもしれませんがつまづいております ・・・ その通り。 どういう風にうまく行かないか書かずして質問にならにと思う。 具体例をあげて、補足すべき。 肝心なのはそれで、それより前は長々と質問に書く必要は無いぐらいだ、と思う。

hiro_ele
質問者

補足

セルに既に入っていた文字と、テキストボックスの文字を連結してセルに表示させることは#1の方の回答で解決しました。 しかし、もじを連結させる方法が分かれば解決すると思っていた、数式を連結させるということができませんでした。 単に、セルに入力されていた数とテキストボックスに入力した数を足していくだけならできるのですが、式を残しながら3回以上連結していくことができません。 例: =1と入っているセルに「1」をたすと「=1+1」とここまではできます。 このセルに「1」を足すと「=1+1+1」としたいのですが、「=2+1」となってしまいます。 このセルにさらに「1」を足すと「=1+1+1+1」としたいのですが、「=3+1」となってしまいます。 数式の答えとしては良いのですが、何と何を足してその数が出たのかをセルに残したいのです。 もしまだ説明不足の点があれば指摘してください。 よろしくお願いします。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答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の値が「空白」だと当然エラーになりますから、コンボボックスの値を先にチェックしなければなりませんよ

hiro_ele
質問者

お礼

早速回答してくださりありがとうございます。 文字を連結させることはおっしゃるとおり質問したのが恥ずかしいくらい簡単にできました。ありがとうございます。 実は、文字が連結できれば解決するかと思って最初の質問には書かなかったのですが、セルの数式も連結したいのです。 ただ単に、セルの数を足していくだけならできるのですが、式を残しながら3回以上連結していくことができません。 =1と入っているセルに「1」をたすと「=1+1」とここまではできます。 このセルに「1」を足すと「=1+1+1」としたいのですが、「=2+1」となってしまいます。 答えとしては良いのですが、どのような計算で答えが出たのかをセルに残したいのです。 良い案があればそれも教えてください。

関連するQ&A