• ベストアンサー

Excelのセルアドレスの指定方法

VB2008でExcelの操作をしている初心者です。ファイルを開き、シートを指定しセルのデータを読み込むまではなんとかたどり着きましたが、セルへのデータ書き込みが出来なく困っています。下記のようにセルアドレスをA1方式で指定すれば書き込みできますがR1C1方式でセルアドレスを指定する方法が判りません。よろしくお願い致します。 exCel.Range("A1").Value = "Hello World"

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

  • ベストアンサー
  • qualheart
  • ベストアンサー率41% (1451/3486)
回答No.1

厳密には、VB内でR1C1方式のセル指定というのはありません。 VB内でR1C1に似た方式でセルを指定したい場合は、Cellsプロパティを使います。 exCel.Cells(1,1).Value = "Hello World" と書くと exCel.Range("A1").Value = "Hello World" と同様になります。 ちなみにCells(行番号, 列番号)です。 VB内では、Rangeによるセル指定より、基本的にCellsプロパティを使うことの方が多いです。 Rangeはあくまで範囲を指定するものですから、Range(Cells(1,1), Cells(1,4))のように使います。 Cellsプロパティを使ってセルを指定する最大のメリットは、行番号や列番号を変数を使って増減させることで、繰り返し処理に使えることです。 例えば For i = 1 to 10 exCel.Cells(1,i).Value = "Hello World" Next とすれば、A列~J列まで繰り返し処理することができます。 ご参考まで。

chiici
質問者

お礼

補足コメントができないのでお礼で連絡います。 念のため、前の状態 exCel.Range("A1").Value = "Hello World" に戻しましたが、    exCel.Cells(1,1).Value = "Hello World" と同じエラーになります。前にも同じようなことがありました。 明日、Subの内容をクリアして最初からやり直してみます。

chiici
質問者

補足

有り難うございます。Cellsで動作させたところ exCel.Cells(1,1).Value = "Hello World" の所で ”NullReferenceExpectionはハンドルされませんでした。”とエラーになります。 exCelは  ”Dim exCel As Excel.Worksheet = Nothing”としています。 例に書いて頂いたような使い方をしたいと思っています。定義(宣言?)の仕方がよくないのでしょうか。よろしくお願い致します。

関連するQ&A

  • Excel VBA 定数にオブジェクトを指定したい

    Excel VBA 定数にオブジェクトを指定したい いつもお世話になりますm(__)m Excel VBAで、定数としてオブジェクトの指定はできないのでしょうか? 例えば、WorkSheets("Sheet1")を定数「Srt1」として設定したいのですが、  Public Const Srt1 As Object = Worksheets("Sheet1") としても「定数のデータ型が不正です」とエラーがでます。 例えば、セルに値をセットする時に Worksheets("Sheet1").Range("A1").Value="あああ" Worksheets("Sheet1").Range("A2").Value="いいい" Worksheets("Sheet1").Range("A3").Value="ううう" と書きますが、これを Srt1.Range("A1").Value="あああ" Srt1.Range("A2").Value="いいい" Srt1.Range("A3").Value="ううう" と書ければプログラムも見やすく、書きやすくなると思いました。 プログラムの最初に Dim Srt1 As Object Set Srt1 = Worksheets("Sheet1") とすれば使えるのですが、複数のシート名をまずは定数として登録したいと思っていますが、オブジェクト(ワークシート名)は定数として登録することは出来ないのでしょうか? お詳しいかた、是非ともご教授お願い致しますm(__)m

  • エクセル2007のマクロについて

    実践で学ぶ Office Excel 2007 VBAというマクロの学習サイトで Sub Macro実践1() 'ブック シート セルアドレスを指定すればブック シートをアクティブにする必要はない             Workbooks("転記.xlsx").Worksheets("転記シート1").Range("A1").Value = _               Workbooks("データ.xlsx").Worksheets("データ1").Range("A1").Value                 End Sub         と入力すると「インデックスが有効範囲にありません」となってしまいます。なにか間違っているのでしょうか?

  • エクセル VBAで検索したセルアドレスを、VBA内の式に組み込む方法

    こんにちは。大変お世話になっています。 あるエクセルシートの中から対象セルをfindを使って検索しました。 Set td = Range("a2:bd35").Find(ymd) これで出たセル番地 td のひとつ右のセルに, 別のシートからデータを入れたいのですが、どうしてもうまくいきません。 Range(td.Address).Offset(0, 1).Select = Worksheets("入力").Range("b3") どのようにしたら良いのでしょうか? どうぞよろしくお願いします。

  • Excel VBAで…。

    データーシート(1)のデータをレイアウトシート(2)に転記するのに 例えば sheets(1).range("A1").value=sheets(2).range("C5").value sheets(1).range("B1").value=sheets(2).range("C6").value sheets(1).range("C1").value=sheets(2).range("C7").value と言うように配置しているのですが もし、シート(1)セルB1の値が空白ならば シート(1)セルC1の値はシート(2)のセルC6に配置・・・ と言うように データがない場合は、転記後の配置は詰めて配置したいのです。 どうすればよろしいでしょうか?

  • Excelの名前を取得したい

    VB初心者です。宜しく御願いします。 ExcelのシートのRange("A11")の名前に「AAA」と付けています。 VBから、Excelを起動して、そのExcelのシートのRange("A11")の名前を取得したい場合はどうすれば良いのでしょうか? VB側でシートにそのセルにその名前が付いているかのチェックをしたいのです。 ご教授御願いします。宜しくお願い致します。

  • VBからExcelのデータを参照するには?

    VBからExcelのデータを参照するには? ExcelのA列を、参照しようとしています。 このA列には数字も混じっています。 例えば A123 abc 456 qwer のように、4行あったとします。 VBのソースコードは、次の通り --------------------- Dim elSequence(10) As String i = 0 Do Until objSheet.Range("a2").Offset(i,0).Value = "" elSequence(i) = objSheet.Range("a2").Offset(i,0).Value i += 1 Loop --------------------- 問題は、Excelのセルに「数字だけの場合(上記の例で4行目)」で、VBはこれを、文字列として扱わずにDouble型と認識してしまいます。 例え、Excelのセルを、プロパティの文字列指定としても「456」はDouble型になってしまいます。 Excelから受け取ったデータを、文字列への変換はどのようにしたら良いですか。 参考になりそうなWeb等でも構いませんので、教えていただけませんか。

  • Excel VBA 条件を満たしたセル上にあるチェックボックス

    Excel2003を使用しています。 Sheet1のN4セルの値と同じ値が入力されているセルをSheet2のA列(A1:A50)から検索し、その行のB列に配置されているチェックボックスにチェックをつけたいのですが、そのチェックをつけたいチェックボックスを指定する方法がわかりません。 検索してヒットしたセルの1つ右隣のセルにチェックボックスが配置されているということで myNum = Sheets("Sheet1").Range("N4").Value Rng = Sheets("Sheet2").Range("A1:A50").Find(myNum) としたとして、Rng.Offset(, 1).Address と、チェックをつけたいチェックボックスの左上のセルアドレスを比較すればいいのかな?と思っているのですが、そのチェックボックスをどのようにしたら指定できるでしょうか? また、別の方法もありましたら、アドバイスをいただけると嬉しいです。 よろしくお願いします。

  • VBからExcelのデータを並べ替えしたい

    VB2008を使用しています。 VBからExcelのデータを並べ替えしたいのですが、どうやればいいのかわかりません。 VBからExcelを立ち上げ、シートおよびセルを参照するところまではできています。 下記を実行するとA列とD列が入れ替わっているだけです。 k_syain_Sheet.Range("A1:D10000").Sort(k_syain_Sheet.Range("A2"), Microsoft.Office.Interop.Excel.XlSortOrder.xlAscending, _ k_syain_Sheet.Range("D2"), , Microsoft.Office.Interop.Excel.XlSortOrder.xlAscending, _ k_syain_Sheet.Range("B2"), Microsoft.Office.Interop.Excel.XlSortOrder.xlAscending) やりたいことは、Excel上のA1~D10000にデータが入っており、A1~D1はタイトル行です。 これから、最優先されるキー「A1」 2番目に優先されるキー「D1」 3番目に優先されるキー「B1」(それぞれ昇順)として並べ替えをしたいのです。 よろしくお願いします。

  • VBからエクセルへの書き込みについて

    xlSheet.Range("B24") =123 の様にするとエクセルのB4セルに123が書き込まれますが、エクセルのセルをマウスでダブルクリックしてセルにカーソルが表示されている状態にすると書き込みが停止します エクセルを操作してもVBの書き込みが停止しない方法は無いでしょうか ご存じの方恐れ入りますが宜しくお願いします

  • EXCEL VBA オートフィルタの値コピー

    ほぼ初心者ですのでよろしくお願いします。 Sheet2にデータがありそのデータをオートフィルタで日付から抽出してSheet3にコピーして、その後Sheet1の表に該当項目をコピーする際についてですが、オートフィルタ後、1日当たり行は10~15行あります、そのうちG列にはデータが通常2つのセルに値があるだけでほかの行は空欄です。(日によってどの行になるかはわかりません)この2つのセルの値をそれぞれSheet1のM10とM11コピーしたいのです、 ちなみにセル番地は下記の方法で取得できましたが、値の取得ができません。 Range("D1").Value = Worksheets("sheet1").Range("A1").End(xlDown).Row Range("D2").Value = Worksheets("sheet1").Range("A65536").End(xlUp).Row Sub データコピー() Range("AB17") = Format(Sheet3.Range("A3").Value, "yy") Range("AE17") = Format(Sheet3.Range("A3").Value, "mm") Range("AH17") = Format(Sheet3.Range("A3").Value, "dd") Range("AK17") = Format(Sheet3.Range("A3").Value, "aaa") Range("D22") = Sheet4.Range("D3").Value Range("D25") = Sheet4.Range("E3").Value Range("H22") = Sheet4.Range("F3").Value Range("D22") = Sheet4.Range("G3").Value Range("L22") = Sheet4.Range("K3").Value Range("Q22") = Sheet4.Range("L3").Value Range("U22") = Sheet4.Range("M3").Value .   .   . End Sub

専門家に質問してみよう