• ベストアンサー

エクセルVBAでセル選択

エクセル2000でリストを作成し、VBAで編集しようとしています。 A列に入力されているコードの先頭に「’」をつけて文字列とするための関数をB2のセルからA列のデータが入力されている最後のセルの隣までコピーしたいと思っています。 A列の最終セルを取得するVBAは分かったのですが、その値をB列の選択範囲として使用する方法がわかりません。 エクセルVBAは全くの初心者です。 どなたか教えてください!

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

  • ベストアンサー
  • moon_piyo
  • ベストアンサー率60% (88/146)
回答No.2

ん~やりたいことはこんな感じですか range("a2",range("a2").End(xlDown)).offset(0,1).FormulaLocal="=""'""&a2"

yukikocchi
質問者

お礼

まさにやりたかったことはこれです! No.3の方の回答と組み合わせて使わせていただきます。 ありがとうございました。

その他の回答 (2)

  • jindon
  • ベストアンサー率43% (50/116)
回答No.3

A列の最終列は取得済みですね? 一応 Range("A65536").End(Xlup).Row こんな感じですかね。 このまま使う場合は、 Range("B2:B" & Range("A65536").End(Xlup).Row).Select で良いでしょう。 変数を宣言して Dim lastA as Long LastA=Range("A65536").End(Xlup).Row Range("b2:b" & lastA).Select こういった使い方の方がポピュラーでしょう。

yukikocchi
質問者

お礼

早速の回答ありがとうございます! 変数の代入の仕方が分かりました。""で囲んで文字列として使えばよかったんですね。 早速使わせて頂きます。

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

>関数をB2のセルからA列のデータが入力されている最後のセルの隣までコピーしたいと思っています それも良いが(書式に拘らないで良いなら) Sub test06() For i = 1 To 5 Cells(i, "A") = "'" & Cells(i, "A") Next i End Sub でできます。それをお勧めします。 >A列の最終セルを取得するVBAは分かったのですが 上記5に当たるところに Sub test06() d = Range("A65536").End(xlUp).Row MsgBox d For i = 1 To d Cells(i, "A") = "'" & Cells(i, "A") Next i End Sub とすれば良いが >B列の選択範囲として使用する方法がわかりません Sub test06() d = Range("B65536").End(xlUp).Row MsgBox d For i = 1 To d Cells(i, "B") = "'" & Cells(i, "B") Next i End Sub でどうですか。 空白行は’を入れないなら Sub test06() d = Range("B65536").End(xlUp).Row MsgBox d For i = 1 To d If Cells(i, "B") <> "" Then Cells(i, "B") = "'" & Cells(i, "B") End If Next i End Sub (1)

yukikocchi
質問者

お礼

早速のお返事ありがとうございました。 変数の使い方、とても参考になりました。 エクセルVBAの構成が少しだけ見えてきました。 どうもありがとうございます。

関連するQ&A

  • エクセルVBAで関数が入った空白セルの取得

    エクセルVBAで下記のようなセルの参照をしたいのですが、よろしくお願いします。(エクセル2002です)   A  B  C  D  E  F 1 78 80 セル(A1)(B1)には値も関数も入れられています。 セル(C1)(D1)(E1)には値は入っていませんが、ワークシート関数が組み込まれており空白となっています。(関数の""にて空白) セル(F1)には何も入力されていません。 今回はセル(B1)の80の値を取得できるようにVBAで下記のようにコードを組みました。 Range("F1").End(elToLeft).Activate そうすると、セル(E1)に関数があるために(?)(E1)がアクティブな状態となります。 関数が入力されていても空白として(B1)をアクティブな状態にするために良い方法はありますでしょうか? 誠に申し訳ございませんが、よろしくお願いします。

  • エクセルVBA 「このセルを選択する」方法は? (超初心者です)

    ExcelのVBA初心者です。どなたか教えてください。 自作の関数を作りたいのですが、excelで、「この場所のセルのひとつ左のセルを選択」して、ある処理をするにはどのようにしたらいいのでしょうか? たとえば、A1に何かデータがあるとき、B1に自作関数を打ち込むとA1の値を使って何らかの処理をして、その値をB1に返す、ということがしたいのです。また、例えばデータがB8にあるときは、C8に関数を入れるとB8のデータが処理されてC8に返ってくるようにしたいです。 最初、ActiveCell.Offset(0,-1) でうまくいくと思っていましたが、実際やってみるとどうもうまくいきませんでした。 どなたかわかる方、よろしくお願いします。

  • セル値が指定行のセル値とマッチしたら先頭列へ移動

    エクセルを開いたらA1セルの値が5だったら2行目のA1セル値とマッチしたG2 5の値の列が先頭列へ移動するようにしたいのですがVBAコードが解る方宜しくお願いします。

  • 急!!Excel VBA 転記マクロを教えて下さい

    Excel VBA超初心者です、 急ぎ作らなければならない資料があり、ご助力願います。 次の様な転記するアクションをコマンドボタンに設定したいです。 Sheet1の列A(先頭セルA2)に入力したデータを、 追加した(入力間違い等を除き、保存した)データ分だけ Sheet2の列B(先頭セルB3)の最終行から転記させていく。 列Aに入力したデータは、並び替えをするので (この分は、今回のVBAに含みません。入力・転記後、Sheet1で普通に並び替えをします。) 列Aと列Bのデータの順番が異なる。 以上です。 どうぞ宜しくお願いします。

  • Excel VBAでセルの整列

    Excel VBAでセルの整列 現在、VBAを勉強中の者です。 最近、勉強を始めたばかりですが、この前何とかVBAを用いてセルの塗り潰しが出来る様になりました。 そこで、今度は色が塗り潰されたセルを添付した画像のように整列したいと考えていますが、どんな風にすれば良いのか見当がつきません。 誰か、教えてください。 やりたい事は、A列に結合されているセルがいくつか存在していて、B列を挟んでC列にA列に関連する文字が入力されています。 そして、C列には予めセルが塗り潰されている箇所がありますが、今回、C列において塗り潰されているセルのみを、結合されているセルの最終行に移動させたいのです。

  • 複数指定セル値と合致したセル値を返す

    A,B,C列に添付の値が入力されておりセルE2の値とF2~F7の値が両方一致したものがA,B列にあればC列の値をG列に順々に入力していきたいのですが。 どなたか関数が解る方、欲をいえばVBAコードが解る方ご教授願います。

  • エクセルVBAについてお尋ね致します。数式が入力されたセルを異なるセル

    エクセルVBAについてお尋ね致します。数式が入力されたセルを異なるセルの条件によって「値」のみ残す方法を模索しております。 使用する列および行の例 列=A、B  行=5~10、15~20、25~30(A列、B列共通) 上記対象セルの内訳 A列(参照セル)=数値 ※空欄の場合もあります B列(変更セル)=数式(Aセル数値 * ○○%) ※B1セルの例:=IF(A1="","",A1*10%) のような数式が記入されております。 (例) Private Sub CommandButton1_Click() ’参照セルの指定 ("A5:A10","A15:A20","A25:A30") のようなコード*** ※現在はAセルの範囲としておりますが、後に変更の可能性を有しますので範囲指定が可能な形式を望みます。 ’変更セルの指定 セル指定のコード*** ※現在はBセルとしておりますが、これも後に変更の可能性を有しますのでA・B・Cのような入力(もしくはA=1、B=2、C=3)による指定可能な形式を望みます。 ’参照セル(Aセル)に数値が入力されている場合、数式から得られた変更セル(Bセル)の値を”値のみ”で残す。 実行コード*** ※参照セル(Aセル)が空欄の場合は変更を望まないので、変更セル(Bセル)は何も致しません。(数式のまま残す) End Sub このようなマクロを望んでおります。 イメージとしては数値がAセルに入力されていた際に同じ行のBセルにおいて右クリックコマンド内〔コピー〕 → 〔形式を選択して貼り付け〕 → 〔値〕の貼り付けを行うことをご想像下さい。 列や行の変更が予想されるので変更が可能なことを望んでおりますが、結果が伴えば他の体裁は気に致しません。 お手数ですがご教授宜しくお願い致します。 以上

  • VBA 飛び飛びのセルを選択するには

    B1からB5のセルの範囲のどこかに○という文字が あるとします。もし、B2とB4に○があったらその隣の A2とA4のセルを選択してコピーしたいのです。 このような場合どのようなVBAのコードを書けばいいのでしょうか? お分かりの方よろしくお願いします。

  • エクセルのVBAで

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

  • エクセル関数とVBA関数で意味が違うのは多いのか

    エクセル関数とVBA関数で意味が違うのは多いのでしょうか? セルA1に「A」と入れ、 B1に「=ASC(A1)」と入れると B1は「A」になります。(半角) VBE画面で Sub test() Debug.Print Asc("A") End Sub を実行すると、-32160 になります。 ヘルプより エクセルでは=全角 (2 バイト) の文字を半角 (1 バイト) の文字に変換します。 VBAでは=指定した文字列内にある先頭の文字の文字コードを返す変換関数です。 となっていますが 同じ関数でも全く意味違うのでびっくりしています。 こういうことは頻繁にあるのでしょうか? (VBAのASC関数のかわりのエクセル関数は、CODE関数でした。)

専門家に質問してみよう