初めて質問させていただきます。
UserForm1にテキストボックス1〜22まで作成しました。
sheet1のボタン1を押すとUserForm1が開きます。
sheet1のA15〜G43の範囲での最終行を取得し
各テキストボックスの内容を各セルに代入したいのです。
TextBox1はsheet1のA15〜A43の値が入っている最終行を見つけそこへ代入。
TextBox2はB15〜B43、TextBox3はC15〜C43、TextBox19はF15〜F43、
TextBox15はG15〜G43 というように飛び飛びの列に代入ということで
超初心者ゆえ、頭が真っ白になってしまいました。
過去レスで似たような記事はあるのですが、応用できず苦しんでおります。。
ぽこぴん さんこんにちわ
色々なやり方があるとは思いますが、エクセルの場合
マクロの記録である程度作れます。
その代表として
'A15を選択
Range("A15").Select
'Ctrl+↓で最終行に移動
Selection.End(xlDown).Select
'現在アクティブなセルの値をテキストボックスに代入
TextBox1.Text = ActiveCell.Value
のようにマクロの記録で2行は求めることは可能です。
また、途中空白が混ざっている場合は次の方法もできます
'A44を選択
Range("A44").Select
'Ctrl+↑で最終行に移動
Selection.End(xlUp).Select
難点は、カーソルが画面をちょこまか動く!
そのた、ループ等で最終行を求める方法もあります。
会社内で、配布するプログラムですと、ちょこまか動いたほうが
楽しいですね。
申し訳ない^^;
テキストボックスの内容をセルに代入でしたね^^;
先ほど述べたことを応用すればできるでしょう。
> 難点は、カーソルが画面をちょこまか動く!
単にSelectしなければいいです。
' TextBox1はsheet1のA15〜A43の値が入っている最終行を見つけそこへ代入
With Worksheets("sheet1").Range("A14").End(xlDown)
If .Row <= 43 Then
.Value = Me.TextBox1.Text
End If
End With
間違っていました。
End(xlDown)はやりづらいので、End(xlUp)の方法。
' TextBox1はsheet1のA15〜A43の値が入っている最終行を見つけそこへ代入
With Worksheets("sheet1").Range("A44").End(xlUp)
If .Row >= 15 Then
.Value = Me.TextBox1.Text
Else
Worksheets("sheet1").Range("A15").Value = Me.TextBox1.Text
End If
End With
スマソ。。。orz
> With Worksheets("sheet1").Range("A44").End(xlUp)
With Worksheets("sheet1").Range("A44").End(xlUp).Offset(1)
A44もA43です。
> With Worksheets("sheet1").Range("A44").End(xlUp).Offset(1)
With Worksheets("sheet1").Range("A43").End(xlUp).Offset(1)
A44からだと、A44にも入れちゃいますので。
VB梅さん、Blueさん、ご親切にありがとうございました!
レス遅くなり申し訳ありません。
御二方のコード試させて頂きました。
無事解決致しました!ありがとうございました。
又何かあれば、宜しくお願い致します。
ツイート | ![]() |