こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

VBA 任意のセルにデータを転記する方法

Excel のユーザーフォームを使って、データの入力をしたいと考えています。

入力ボタンを押すと、テキストボックスに入力した内容が別シートのセルに転記されるものです。

指定したセルに追加する、1番下の行に追加する、はできるのですが、コンボボックスに入力した内容によって転記するセルを変える方法はありますでしょうか?

具体的に言うと、
ユーザーフォーム内のコンボボックスで
月(4月~3月)を選べるようにしているのですが
4月を選べば4月を入力するセルに。7月を選べば7月を入力するセルに転記したいです。
何かいい方法はありますでしょうか。

投稿日時 - 2018-03-30 10:08:55

QNo.9483291

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

>ユーザーフォーム内のコンボボックスで
>月(4月~3月)を選べるようにしているのですが

添付のようなフォームを表示するところまではできている。
ということでいいですね。

また、コンボボックスの候補群に並んでいる月の名前と
シートの名前が1対1で対応しているということでいいですね?

ならば、
commandボタンを押下するときに、
コンボボックスで選択している月
(選択している行の文字列)は、
Me.ComboBox1.Text で取り出せます。

この文字列と同じシート名のシートに書き出すわけですから

Dim TukiSheetName As String

TukiSheetName = Me.ComboBox1.Text

With ThisWorkbook.Sheets(TukiSheetName)
 'ここに書き出すコード 例えば
 .Cells(1, 1).Value = Val(Me.TextBox1.Text)
End With

といったコードになりましょう。

投稿日時 - 2018-03-31 09:41:17

ANo.1

ユーザーフォームの、月を選択(決定)するテキストボックスの月でワークシート名を(VBAで)決め(選択し)、そのデータ最終行の次の行に、入力データを代入すればよい(私は転記という言葉を使わない、代入でしょう)。
月名(例4月か4かなど)と具体的なシート名(四月販売高とか四月実績とか)が質問に例示してないので、質問表現が未熟。それを教えてもらわないと回答は具体的にならず、質問者はVBAコードは自力で組めないのでは。
>任意のセルにデータを転記する
は、VBAに少経験で、本心を伝えておらず、正しくは
「データの最終行の次行に、テキストボックスで入力したデータを転記」、ではないのか。
参考
最終行の次行にデータをセット。
Sub test01()
Set sh = Sheets("4月")
lr = sh.Range("A" & 100000).End(xlUp).Row
MsgBox lr
sh.Range("A" & (lr + 1)) = "入力データ"
End Sub
"入力データ”  ー> の部分はユーザーフォームのコンボボックスやテキストボックスからとる。
データが数値の場合は、代入に先立ち、VAL( )をかましておく。

質問で、
列が決まらないとコードは書けない。
シート名(1字1句まで)が回答者に伝わらないとコードは書けない。
これぐらいは質問に書いて、さらにむつかしそうな点を質問するのが、本コーナーの活用法だろう。

投稿日時 - 2018-03-30 11:31:09

あなたにオススメの質問