タグ

ブックマーク / officetanaka.net (26)

  • Office TANAKA - Excel VBA Tips[結合セルを調べる]

    セルを結合するにはRangeオブジェクトのMergeメソッドを実行します。 Sub Sample1() Range("A1:B3").Merge End Sub こんな感じです。実行するとセル範囲A1:B3が結合されます。ちなみに結合を解除するにはUnMergeメソッドを実行します。 さて、セルを結合したり解除したりするのは簡単ですが、任意のセルが結合されているかどうかを調べるにはどうしたらいいでしょう。実は今やってる仕事の支援システムを作っていて、この判断が必要になりました。そんなに難しいテクニックではありませんが、意外と知られていないようなので、せっかくですからご紹介しましょう。 ここでは上図のようなシートを例にします。セル範囲A3:A4とセル範囲A6:A8が結合されています。B列は結合されていません。よくみかけるレイアウトですよね。 結合セルの判定で役立つのはMergeCellsプロ

    fumokmm
    fumokmm 2018/04/24
  • Office TANAKA - VBA高速化テクニック[配列を使う]

    パソコン通信時代に書いた、この「VBA高速化テクニック」の中で、間違って伝わっているな~と感じていたのは、冒頭の「画面を止める」と、これ「配列を使う」です。90年代のパソコンはスペックが低かったです。CPUは遅いし、メモリも少なく低速、Windowsの画面描画機能も遅かったし、そもそもExcelもそれほど速くはなかったです。そんな中で、大量のセルにアクセスするのなら、一度配列に入れて配列を操作する方が速いよって話でした。でも、何となく「配列に入れると速い」ということだけが一人歩きして、とにかく何でも「配列は速い!配列は速い!配列!配列ぅ!」って言われてます。 ちょっとやってみましょうか。まずは単純に、データを探す操作から。A列に200,000個の名前が入っています。この中から"田中"を探して、該当するB列の数値を取得します。ちなみに"田中"は一番下のセルA200000にあります。 Sub

    fumokmm
    fumokmm 2018/04/24
  • Office TANAKA - ファイルの操作[作業用ブックを開く]

    ここでは、ユーザーに分からないようにブックを操作する方法をご紹介します。たとえば、Book1を表示している状態で、裏で開いたBook2を操作するような使い方です。 見えないように開く ブックを開くときは、WorkbooksコレクションのOpenメソッドを使います。これは、難しくないですね。 Sub Sample1() Workbooks.Open "Book2.xlsx" End Sub もちろん、ブックを開くと、開いたブックがアクティブになります。ユーザーに分からないようにブックを開くには、開いたあとで、アクティブブックを切り替えなければなりません。 Sub Sample1() Workbooks.Open "Book2.xlsx" ''別のブックをアクティブにする End Sub もし、このマクロが書かれているブックをアクティブにするのなら、ThisWorkbookをアクティブにしてや

  • Office TANAKA - ファイルの操作[ブックを開く]

    ブックを開くには、WorkbooksコレクションのOpenメソッドを使います。 Excelでは、同時に複数のブックを開くことができます。開いているそれぞれのブックはWorkbookオブジェクトとして操作できます。このWorkbookオブジェクトの集合体がWorkbooksコレクションです。新しいブックを開くということは、この集合体に、新しいメンバーを加えるということです。だからWorkbooksコレクションのOpenメソッドです。 次のコードは、C:\Book1.xlsxを開きます。 Sub Sample1 Workbooks.Open "C:\Book1.xlsx" End Sub Workbooks.Open Filename:="C:\Book1.xlsx" という書き方もできます。 「Filename:=」の意味や、つけるのとつけないのとでは何が違うかについては、下記ページを参考に

  • Office TANAKA - Excel VBA Tips[ブック・シートが存在するか調べる]

    サイトをご覧になった方からリクエストをいただきました。「特定のブックを開いているか、どうやってチェックしたらいいですか?」と。また、別の方から「'合計'という名前のシートがあるかどうか調べたい」というメールもちょうだいしました。これらは同じ考え方で実現できますので、一緒に解説しましょう。 ブックが開いているか調べる このテクニックは、実は「ファイルの操作」の「現在開いているブックの一覧を取得する」で解説しています。念のため同じコードを再度ご紹介します。 Sub Sample01() Dim wb As Workbook, flag As Boolean For Each wb In Workbooks If wb.Name = "Book1.xlsx" Then flag = True Next wb If flag = True Then MsgBox "Book1 を開いています。",

    fumokmm
    fumokmm 2013/07/16
    シート存在チェック用のメソッド無いのね。
  • Office TANAKA - セルの操作[セル範囲の取得]

    操作の対象セル範囲が不定の場合 ここまでの解説では、操作の対象を「セルA1に」とか「セル範囲A1:C3に」などと簡単に決めてきました。もちろん解説なのですから、それは勘弁していただきたいのですけど、実際のマクロ作成では操作の対象を特定することに苦労するものです。操作の対象セルを、どう的確に特定するかが、VBAのビギナーとベテランで差が出るところでもあります。たとえば、次のようなデータを考えてみましょう。 このデータをマクロでクリアします。ただし、データが何行何列あるかは、そのときによって異なります。セルをクリアするにはRangeオブジェクトのClearContentsメソッドを使います。次のコードはセル範囲A1:D5をクリアします。 Sub Sample1() Range("A1:D5").ClearContents End Sub クリアすべきセル範囲の左上はセルA1です。したがって、セ

    fumokmm
    fumokmm 2013/02/21
    Range(Cells(r1, c1), Cells(r2, c2)) みたいな書き方もありなのね!