• ベストアンサー

Excel VBAでの質問です。アクティブになっているシート上では書けたのですが・・・

例えば、sheet1、sheet2、sheet3があって、今sheet1がアクティブになっています。sheet1がアクティブの状態でsheet2のセル(3,2)からセル(3,12)の間に上から順に値を入力していきます。値はForm1のTextbox1の値です。 しかしながら、sheet2のセル(3,2)からセル(3,10)の間には、何らかの値がすでに入っている場合があります。 このような場合は、空白のセルの中で一番上のセルに値を返したい場合、どのように記述すればよいでしょうか? sheetをアクティブ状態になっていれば書けたのですが、アクティブでないsheetに、アクティブ状態にしないで上のようなプログラムを書くのがなかなかできません。 お手数かけますが、よろしくお願いします。

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

  • ベストアンサー
noname#31387
noname#31387
回答No.2

CommandButton1をクリックすると シート2のA列の最後の空白セルにTextBox1の値を書き込みます。 参考になれば良いのですが。 Private Sub CommandButton1_Click() Dim Lrow As Long With Worksheets("Sheet2")    Lrow = .Cells(Rows.Count, 1).End(xlUp).Row    .Cells(Lrow, 1).Offset(1, 0).Value = _               Me.TextBox1.Value End With End Sub

aspha
質問者

お礼

なんか、難しい処理を組み合わせておりました。 単純に空白セルを見つけて、そこに記述するようにしました。 ご回答ありがとうございました。

aspha
質問者

補足

しかしながら、sheet2のセル(3,2)からセル(3,10)の間には、何らかの値がすでに入っている場合があります。このような場合は、空白のセルの中で一番上のセルに値を返したい場合 ここの部分で、引っかかっています。 もうちょっと、知恵かして下さい

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

noname#187541
noname#187541
回答No.1

こんにちは。 アクティブでないシートで処理をするときは、セル指定をシート名からきちんと書けばいいです。 Worksheets("Sheet2").Range("A1").Value = "AAA" という風にします。処理が多いときは With Worksheets("Sheet2") .Range("A1").Value = "AAA" .Range("A2").Value = "AAA" End With とWithを使うといいでしょう。

aspha
質問者

お礼

なんか、難しい処理を組み合わせておりました。 単純に空白セルを見つけて、そこに記述するようにしました。 ご回答ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルVBAテキストボックスをシートに…

    TextBox1に会社名、TextBox2に商品名、TextBox3に金額、TextBox4と5にも商品名と金額を入力するとして、   A  B  C 1 会社 商品 金額 2 上みたいにシートに表示させたいのですが、TextBox4と5が入力されている場合はB2、C2にも値が入り、新しくテキストボックスに入力をしたときはその下のセルに表示されるようにしたいです。 分かりにくい説明ですが宜しくお願いします。

  • VBAについての質問です。

    原本にて、 ○月  日( )    時に行きます。 という文字が、結合された一つのセルに入力されている状態で、 別シートに15分単位ぐらいでリストが作られています。 そのリストを上から順に空白のスペースにもともと入力されている物の中に組み込みたいのですが、そんなことは可能なのでしょうか? めんどくさい質問で大変恐縮ですが、よろしくお願いします。

  • エクセルのVBAで

    ある列(仮にA列とします)の最終行がA30であり A25までは空白だとします。 この時に、A30の値をA29~A25=データの入力されていないセルに入力(コピー)するにはVBAでどのように記述すればいいのでしょうか? 最終行から、上にその最終行の値をデータの入力されているセルに達するまで入力(コピー)したいのですが。 分りづらい表現で申し訳ありませんが、よろしくお願い致します。

  • エクセル vbOKCancel

    エクセル vbOKCancelについて Sheet上にボタンを作り、フォームが表示 フォーム上の ボタンをクリックしたらTextBoxの値がSheetの セルに値を入れるようにしました! MsgBoxを表示させて ”セルの値を入れますか?”と させましたが・・・はいをクリックは問題ないのですが いいえをクリックしても 値はセルに入力されてしまいます! いいえをクリックしたら 入力させない記述はあるのでしょうか? 教えて下さい。

  • エクセルvbaセル範囲について

    困っております。 ご教授ください。 エクセルシート上に1~10の数字が列方向に並んでいます。 ユーザーフォームでtextbox1とtextbox2を作成します。 textbox1とtextbox2は1~10の間で範囲を入力します。 textbox2でエンターを押されたときに処理が開始します。 例えばtextbox1に「3」、textbox2に「8」が入力された場合、 3,4,5,6,7,8のセル範囲を選択したいのですがどのようにすればよろしいでしょうか。 よろしくお願いします。

  • エクセルVBAについて質問です。VBAを初めて1カ月くらいなので、簡単

    エクセルVBAについて質問です。VBAを初めて1カ月くらいなので、簡単な質問かもしれませんが、よろしくお願いします。 Cells(1, 1).Value = "'1/" + TextBox1.Value 上のコードの"'1/"の部分で質問なのですが、例えばTextBox1.Value=2の場合、セルA1には「1/2」と表示されます。そしてこの「1/2」を数式として扱おうとするとエラー(#VALUE!)になります。その原因はセルA1をクリックすると、メニューとシートの間にある「fx」の右側の部分に「'1/2」と表示されているからだと思うのですが…。 これを数式として扱う何か良い方法はありませんか?シートを扱って解決するのではなくVBAを扱って解決したいのですが…。

  • Excelでの複数シートへの値の入力

    おはようございます。 Excel2000で複数のシートを選択した状態でセルに値を入力すると、他のシートの同じセルに内容が入力されますよね。 この機能の名称はわかりませんが・・・(^_^;) これをヒントに「フォーム内にあるTextBoxに入力された値を各シートのセルに入力しよう」というVBAのソースを作ってみましたが、 実行してみると選択されている1枚目のシートにしか値が入力されません。 汚いソースをみなさんに見せるのは恥ずかしいのですが、 是非実現したいので、どこが間違っているか指摘をいただけると幸いです。 やろうとしていること: フォームのテキストボックスに値を入力し、 コマンドボタンを押すとシートを複数枚選択し、 各シートのセル”A1”(AからDまでを結合)に値を入力する。 ******************************************* Private Sub CommandButton1_Click() 'テキストボックスの値取得と、店名の合成 Dim myTmei As String Dim myTmei2 As String myTmei = TextBox1.Text myTmei2 = "店名" & myTmei 'シートの選択 Sheets(Array(5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46)).Select '値の入力 Range("A1").Select Range("A1").Value = myTmei2 End Sub ****************************************** 結果を見ると、シート自体は選択できているのですが、 その中でも「アクティブになっている(?)シート(1枚目)のセルだけに値を入力しなさいよ。」と書いてしまったようで、 「全てのシートのセル”A1”に入力しなさい。」という部分が書けていないのだと思うのです。 Selectだけじゃ、ダメなのかな・・・ どうかよろしくお願いします。

  • エクセルVBAの入力について

    "Sheet1"のA1、C1、F1、G1の値(計算結果のみ)すべてコピーして、 貼り付ける場所が"Sheet2"のA1:Z10の範囲内で、 A1はB列、C1はG列、F1はH列、G1はZ列の空白セルに上詰めで貼り付ける。 なおF、G、H、Z列以外の列には値が入力されていたり空白もあります。 また同時に、 "Sheet1"のA1、C1、F1、G1の値(計算結果のみ)の内でA1とF1のみコピーして、 貼り付ける場所が"Sheet3"のC1:Y10の範囲とC13:Y23範囲内で、 A1はC列、F1はY列の空白セルに上詰めで貼り付ける。 なおC、Y列以外の列には値が入力されていたり空白もあります。 またC11:Y12の範囲内にはすべて値が入力されています。 よろしくお願いします。

  • VBA 別シートにコピペ後値クリア(パート2)

    お世話になります。同じような質問をさせていただいて間もないのですが、またしてもわからないことがありますので質問させていただきます。 エクセルにてコマンドボタン(SHEET1上に配置)をクリックすることで下記を実行するにはどうしたら良いですか。 (1);SHEET1のB12:I23に入力した値をSHEET2のB4:I15に貼り付けを行い、その後にSHEET1のB12:I23を空白に戻す。 (2);(1)を実行後、再度SHEET1のB12:I23に値を入力を行い、同じコマンドボタンをクリックすると、今度は(1)で貼り付けたSHEET2のB4:I15の下に改行して貼り付ける。ただし、前回貼り付けられたSHEET2のB列の最終行の下に空白のセルをつくりたくないです。 例えば、(1)を実行したときにSHEET1のB15の行までしか入力が無かった場合は、(2)を実行しSHEET2にコピペするのはB7の行からということです。 あとはこの作業のくりかえし 説明ベタで申し訳ありませんが、SHEET1で入力する際は、全ての行(B12:B23)が埋まるわけではないのです。 SHEET2はSHEET1に入力した値を記録として残しておくために設けるので空白セルを作りたくないのです。どうか宜しくお願いします。

  • エクセルVBAもし同じ値なら!!

    エクセルVBAもし同じ値なら!! 開いているBookのFormから違うBookのSheet1のA列にDATAを入力することはできます。 例)TextBox1の値があれば次の列に入れることはできます。 悩んでいるのは (1)TextBox1と違うBookの"Sheet1”のA列が同じ値なら  MsgBox "既に登録済みです。"と表示させて  ElseでDATAを入力させたいです。 '使用行を格納 lngYcnt_K = SH1.UsedRange.Rows.Count For lng = 1 To lngYcnt_K 'TextBox1と同じ値を見つけてテキストボックスの値を入力。 If CStr(TextBox1.Text) = CStr(SH1.Cells(lng, 1)) Then MsgBox "既に登録済みです。" Else 最終行 = SH1.Range("a65536").End(xlUp).Row TextBox1.Text = SH1.Cells(lng, 1) TextBox2.Text = SH1.Cells(lng, 2) End If Next lng どのようにすれば良いのでしょうか?? 教えて下さい!