自分は、1年前からPythonを使い始めました。Pandasを始めとするPythonのデータサイエンス用のライブラリーは便利です。 つい最近、マイクロソフトがExcelにPythonを搭載することを検討しているというニュースが流れました。VBAとは長い付き合いなので、前半でVBAよりPandasが数倍便利だということを書いて、後半でExcelにPythonを搭載されることへのコメントを書くことにします。自分は、ExcelはデータのためのGUIツールとしては便利で役に立つツールだと思っています。ただ、VBAの方が長年放置されていて最近の言語としては落第なのでPythonが搭載されることを期待したいと思っています。急遽テーマを変更したので、時間がなくて以下は「Excel VBA Advent Calendar 2017 20日目」の記事と同じにしてしまいました。 「ExcelにPythonが搭
セルに数式を入力/取得する(Formula/FormulaR1C1プロパティ) (Excel 2000/2002/2003/2007/2010/2013/2016) ツイート セルに数式を入力、または入力されている数式を取得するプロパティです。 対象がセル範囲の時には取得される結果は2次元の配列になります。 構文 Object.Formula A1形式で数式の設定/取得 Object.FormulaR1C1 R1C1形式で数式の設定/取得 数式を設定するときは「=」から記述し、数式全体を「"」で囲みます。 「=」を忘れると文字列とみなされてしまうので、注意してください。 ■A1形式とR1C1形式 セルを参照する形式には、A1形式とR1C1形式があります。 A1形式は「A1」や「C5」のように、列をアルファベット、行を行番号で表す形式です。 Excelの既定ではA1形式になっているのでおなじ
WinMergeの準備 1. WinMergeをダウンロードしてインストールする。 2. 上記ページの「Excelからテキストへの変換プラグイン」のExcelToText.sctを下記のフォルダにコピーする。 "C:\Program Files\WinMerge\MergePlugins" 3. WinMergeを起動してプラグインの自動展開を選択する メニュの[プラグイン]の[自動展開]をチェックする。 Excelの準備 Excel 2003の場合 1 Excelを起動 2 [ツール]→[マクロ]→[セキュリティ] 3 [信頼できる発行元タブ]を選択する。 4 [Visual Basic プロジェクトへのアクセスを信頼する]にチェックを付与する。
コピーの件 元のソフト(例えばメモ帳)は漢字など入力時に、フリガナ情報を記録しません。従ってメモ帳をコピーしてもそんな情報はもともと無いのですから、エクセルに持ってこれません。その他のソフトもほとんど、フリガナ情報を持っていません。使われるかどうかわからない情報を記録し、ファイル保存で、ファイルに持つのは、無駄ともいえる訳です。欧米圏のソフトエクセルが、良くやったと思います。それだけエクセルが手間・隙?かけているわけですかね。 ーー そういう場合の次善の策は VBAで、標準モジュールに Function getphonetf(a) getphonetf = Application.getphonetic(a) End Function と入れて、普通の関数と同じく セルに =getphonetf(A1) のように入れます。ユーザー関数を作るわけです。 すると A列 B列 山下 道信
デバックでウォッチウインドウからActiveCellのプロパティを見るとValueとValue2があります。 ValueとValue2の違いは何かなとまず思うでしょう・・・調べてみました。 Value2 プロパティと Value プロパティの唯一の違いは、Value2 プロパティでは通貨型 (Currency) および日付型 (Date) のデータを使用しないことです。倍精度浮動小数点数型 (Double) を使用して、これらのデータ型を浮動小数点数の形式にした値を返すことができます。 http://msdn.microsoft.com/ja-jp/library/cc391692.aspx サンプル Sub Test() Dim dtmDate As Date dtmDate = Now ActiveCell.Value = dtmDate 'セルでの表示 2009/1/14 20:17
Sub ReplaceSamp1() strSamp = "123456789" strSamp = Replace(strSamp, "123", "000") '000456789を返す Range("A1:A6").Select '---置き換え対象範囲を選択します With Selection .Replace What:=1, Replacement:="1:北海道", LookAt:=xlWhole '---完全に一致するものだけ置き換えます .Replace What:=2, Replacement:="2:青森県" '---2回目以降はLookAtには前回と同じものが使用されるため、省略が可能です .Replace What:=3, Replacement:="3:秋田県" .Replace What:=4, Replacement:="4:岩手県"
少し遊んでもみました。 このページは長い間更新をしておらず、最初のサンプルコードだけでしたが、よく見るとコメントをいちいちSelectして書式を設定している記述だったので、 これを直そうと思ったのですが、ついでなのでコメントが「図形」だということを利用して、少し「いたずら」をやってみたのが3番目のサンプルです。 以前は手操作でも、コメントを選択して「図形の調整」「オートシェイプの変更」を行なえばできることなのですが、どうやらExcel2007以降ではマクロを作成しないとできなくなってしまったということです。 セルのコメントもVBAから動的に変更できます。 サンプルは、A1セルのWorksheet_Changeイベントでコメントを書き換えています。 (画像をクリックすると、このサンプルがダウンロードできます) このサンプルでは、セルの内容をコメント上に表示させています。 このマクロは、ワーク
カーソルの選択セルを移動させずに、画面のスクロールポイントだけを移動します。 画面スクロール状態をいろいろいじった状態で保存すると、次にそのワークブックを開いた時に「わけの解らない」画面になってしまうことがあります。 (画像をクリックすると、このサンプルがダウンロードできます) これは最後に保存された時の状態を再現するからですが、こんなことを防ぐためには、ワークブックを開いた時にそのワークシートに左上に画面を戻すようにします。 '*************************************************************************************************** ' シートの表示位置を左上に戻すサンプル Module1(Module) ' ' 作成者:井上治 URL:https://www.ne.jp/asahi/excel/
一時期、悩んだ事象です。 マイクロソフト サポート技術情報 - JP408042 [XL97] 印刷されるページの総数を調べる方法 http://support.microsoft.com/default.aspx?scid=http://www.microsoft.com/japan/support/kb/articles/JP408/0/42.asp の中に、 H_Break = Sheet1.HPageBreaks.Count '横の改ページ数取得 の記述があり、頁数が取得できるように書いてあります、しかし、この技術情報の最後に、 『注意 このプロシージャを実行する前に、改ページ位置のセルを画面に表示して、 改ページ位置を認識させる必要があります。次のいずれかの操作を 1 度実行します。 ・改ページされているセルを画面に表示 ・ZOOM で縮小したあと元に戻す 』 とあり、技術
'================================================================================= Sub 選択したシートを印刷する() 部数 = 1 '印刷部数を指定する ※1 Sheets("SSS").PrintOut Copies:=部数 '指定部数を印刷する ※2 End Sub '--------------------------------------------------------------------------------- Sub アクティブシートを印刷する() ActiveSheets.PrintOut '印刷する(1部) End Sub '-----------------------------------------------------------------------------
操作の対象セル範囲が不定の場合 ここまでの解説では、操作の対象を「セルA1に」とか「セル範囲A1:C3に」などと簡単に決めてきました。もちろん解説なのですから、それは勘弁していただきたいのですけど、実際のマクロ作成では操作の対象を特定することに苦労するものです。操作の対象セルを、どう的確に特定するかが、VBAのビギナーとベテランで差が出るところでもあります。たとえば、次のようなデータを考えてみましょう。 このデータをマクロでクリアします。ただし、データが何行何列あるかは、そのときによって異なります。セルをクリアするにはRangeオブジェクトのClearContentsメソッドを使います。次のコードはセル範囲A1:D5をクリアします。 Sub Sample1() Range("A1:D5").ClearContents End Sub クリアすべきセル範囲の左上はセルA1です。したがって、セ
1つのセルに値を入れるなら、 Range("A2").Value = "a" セルA2に値を代入します。 なお、キーワード「Value」は省略できるので、省略して書く人も多いようですが… 詳しくはFormulaとValueの関係を参照のこと。 Cells しかし プログラム内でループして使いたいような場合は この表記方法は不便です。その場合はCellsを使えます。 Dim Y As Integer For Y = 1 To 5 Cells(Y, 1).Value = "a" Next Cellsというキーワードを使っていますが、内容的にはRangeと同じです。 Cells(行,列)という形式で、いわばCells(Y座標,X座標)という指定です。 (X,Y)という順序と逆なので混乱しやすい(苦笑)…まぁExcelは表なので(行,列)なんだけど Offset ある範囲を移動していって処理するよ
エクセルのVBAで印刷の設定をするには"PageSetup"オブジェクトを使います。 With Activesheet.PageSetup 'プリント範囲の設定 .PrintArea = ("A1:K30") '用紙サイズ xlPaperSizeクラスの定数を指定 .PaperSize = xlPaperA4 'A4用紙 '用紙の向き .Orientation = xlLandscape '=横 xlPortrait=縦 '拡大率 10~400%で指定 .Zoom = 110 '印刷範囲を指定したページ数に収める 'Zoomが設定されていると無効 .FitToPagesTall = 1 '縦 .FitToPagesWide = 1 '横 'マージン .LeftMargin = Application.CentimetersToPoints(1.5) .RightMargin = App
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く