• ベストアンサー

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