約 2,870,255 件
https://w.atwiki.jp/office2008/pages/12.html
Excel
https://w.atwiki.jp/internet-notes/pages/12.html
目次 ファイル操作 ExcelVBAで、ファイルを作成する。 Windows API WindowsのAPIを用いて、Excel VBAからキーボードを操作する。 ユーザーフォーム Excelのワークシートをダブルクリックした際、クリック位置のおよそ右下にユーザーフォームを表示する。 ファイル操作 ExcelVBAで、ファイルを作成する。 Windows API WindowsのAPIを用いて、Excel VBAからキーボードを操作する。 Shell関数などを用いて、他のアプリケーションを起動した際、通常のキーであれば、SendKeysによって操作できるが、Alt+TabやAlt+PrintScreenなどのキー操作はできない。その際に、以下のようにAPIを用いてキー操作を擬制する。 Visual BasicのKey Code 定数(MSDN) Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _ ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Private Const KEYEVENTF_EXTENDEDKEY As Long = H1 Private Const KEYEVENTF_KEYUP As Long = H2 Private Const VK_LMENU As Long = HA4 Private Const fKEYDOWN = KEYEVENTF_EXTENDEDKEY Private Const fKEYUP = KEYEVENTF_EXTENDEDKEY Or KEYEVENTF_KEYUP Alt+Tabキーを押すマクロ Sub S_AltTab() keybd_event VK_LMENU, 0 , fKEYDOWN, 0 keybd_event vbKeyTab, 0 , fKEYDOWN, 0 keybd_event vbKeyTab, 0 , fKEYUP, 0 keybd_event VK_LMENU, 0 , fKEYUP, 0 End Sub PrintScreenキーを押すマクロ Sub S_PrintScreen() keybd_event vbKeySnapshot, 0 , fKEYDOWN, 0 keybd_event vbKeySnapshot, 0 , fKEYUP, 0 End Sub ユーザーフォーム Excelのワークシートをダブルクリックした際、クリック位置のおよそ右下にユーザーフォームを表示する。 シートの縮尺を変えたり、右スクロールをしてダブルクリックをするとうまくいかない。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) With UserForm1 .StartUpPosition = 0 表示位置を初期化 .Top = Target.Top + 100 上端からの距離 .Left = Target.Left + 100 左端からの距離 .Show 表示 End With End Sub 最終更新日時:2008年10月04日 05時37分28秒
https://w.atwiki.jp/0x0b/pages/80.html
BASIC(beginner's all-purpose symbolic instruction code) VB(Visual Basic) VBA(Visual Basic for Applications) BASIC(beginner s all-purpose symbolic instruction code) 手続き型言語 (「初心者向け汎用記号命令コード」を意味する)の頭字語、または、基礎のFORTRAN言語を意味する「basic FORTRAN」ともいわれる。 FORTRANの文法が基になっており、初心者向けのコンピュータ言語として、1970年代以降のコンピュータ(特にパソコン)で広く使われた。パソコンがCUI環境からGUI環境となった現在でも、Microsoft Windowsアプリケーションの主力開発言語であるVisual Basicの文法に影を残している。 プログラム例と出力例 画面に次のように入力したとする 10 REM 5つ数える 20 FOR I = 1 TO 5 30 PRINT I 40 NEXT RUN RUN命令を入力すると、それ以前に入力されたプログラムが実行される。この場合の出力は次のとおり。 1 2 3 4 5 また、プログラムに編集を加えたい場合、続いて例えば次のように入力する。 10 REM 5つ数える(”3”だけ飛ばす) 25 IF I = 3 THEN GOTO 40 RUN このように入力すると、10で始まる行が書き換えられ、20行目と30行目の間に25行目が挿入される。この場合の出力は次のとおり。 1 2 4 5 VB(Visual Basic) BASIC言語を基に作られたマイクロソフトのスタンドアロン開発用プログラミング言語であり、RADに対応した統合開発環境の名称 開発元マイクロソフト 初版1.0 - 1991年(20年前) 最新版2010 SP1(2011年3月11日(5か月前)) 対応OSWindows XP SP3 Windows Vista SP2 Windows 7 Windows Server 2003 SP2 Windows Server 2008 SP2 プラットフォームx86, x64 (WOW64) 種別統合開発環境 ライセンスMicrosoft EULA(プロプライエタリ)※無償版有 公式サイトmsdn.microsoft.com/ja-jp/vbasic マイクロソフトのQuickBASICを拡張したもので、Microsoft Windows 用のアプリケーション開発、および Web用のアプリケーション開発、モバイル向けのアプリケーション開発などを行うことができる。Visual Basicを略してVB(ブイビー)と呼ぶことも多い。当初からWindows向けに開発されたため、同社製品との親和性は非常に高い。 フォーム上に、あらかじめ用意された各種のGUIパーツ(コントロール)を配置して、それらのプロパティが変更されたり、マウスでクリックされたりするなどイベントが発生した場合の処理を記述してゆくことで、プログラムを作成していくスタイルが特徴。グラフィックの描画など、GUIを実現するときに付随する定型的な画面管理はパーツの内部で行なわれるため、プログラマが直接記述する必要性が大幅に低減され、記述が煩雑になりがちなGUIを利用したプログラムを、簡単に作成することができる。 バージョン1.0ではWindows版の後にMS-DOS版が発売されており、キャラクタベースにもかかわらずコントロールを配置してGUIを構築することができた。ただしキャラクタベースであるため、フォームを使用した場合、グラフィックスの描画は不可能である。 言語仕様は、旧来のBASIC言語に比べ、構造化プログラミングの機能が加えられるなど大きく拡張されており、加えてオブジェクト指向に近い概念も取り入れられている。バージョン6.0以降のVisual Basicは高度な機能を持っており、高度な機能を提供するソリューションの開発も出来る。バージョン6.0以前ではオブジェクト指向の要素が十分には実装されておらず、特に継承にあたる機能が皆無だったが、バージョン7.0 (.NET 2002)以降では完全なクラスベースのオブジェクト指向の機能が実装されている。 バージョン5.0よりも前のバージョンではインタープリタ動作のみであったこともあり、実行速度ではCやC++で記述したネイティブプログラムに比べ10倍から20倍遅いと言われていた(実際には処理内容に応じて速度比較の結果は異なる)。バージョン5.0と6.0では、Win32 ネイティブコードへのコンパイルがサポートされ、速度面での大幅な改善が図られている。また、実行環境を.NET Frameworkに移したVB.NETでは、最終的にコンパイラが出力するコードはVisual C#等と同じ MSIL 中間コード (Javaのバイトコードに近い) であるため、他の.NET言語と比較して速度面でも遜色ないものとなっている。さらに、MSILは実行時に.NETのJITコンパイラにより最適化されたネイティブコードに変換されるため、Javaのバイトコードと比較して非常にオーバーヘッドが小さい。 DirectXに関してはDirectX7以降、Visual Basic上からでも利用が可能となっている。Visual Basic6.0ではVB用のCOMタイプ ライブラリを使用する事でDX7及び8を、VB7.0(.NET 2002)以降ではDX9を操作する為の.NETマネージ ライブラリ (Managed DirectX)が提供されている。なお、XNAのリリースに伴い、Managed DirectXの更新は終了しているが、Windows API Code Pack for Microsoft .NET Frameworkと呼ばれるWindows APIおよびDirectXを含むCOMコンポーネントの.NET用ラッパーライブラリを使用することで、VB.NETおよびVisual C#などの.NET言語からもDirect3D 10やDirect3D 11を使用することが可能となっている。 「BASIC」の由来から、プログラミング初心者用といわれることが多く、また当初のバージョンでは機能も限定的だったが、バージョンを重ねるごとに拡張され、現在ではさまざまなビジネスシーンで活用されている。習得が容易でハードルの低い開発言語であるがゆえに、非難や侮蔑の対象となることもあるが、その簡易性・生産性からハイレベルのプログラマにも根強いファンは多い。 種類 Visual Basicには、大きく分けて2種類ある。1つはバージョン1.0から6.0までの旧来版、もう1つはバージョン 7.0 (2002) 以降の.NET Framework対応版である。.NET Frameworkに対応したバージョン7.0以降はバージョン6.0以前と比較して大きな変更が施され、互換性もない。 旧来版のバージョン バージョンの履歴 製品名 バージョン 内部バージョン リリース 備考 Visual Basic 1.0 1.0 1.0 1991年 オブジェクト指向の基本的な部分を実装。日本では発売されなかった Visual Basic for MS-DOS1.0 1.0 1992年 Windows版との互換性は低いが、DOS版QuickBASICの後継バージョンとして使える。PC-98用の日本語版も発売されていた Visual Basic 2.0 2.0 2.0 1992年 OLE, ODBC対応。日本語版は1993年で当初はODBC対応はなし Visual Basic 3.0 3.0 3.0 1993年 日本では発売されなかった。 Visual Basic 4.0 4.0 4.0 1995年 32 ビット版と 16 ビット版がある。 Visual Basic 5.0 CCE 5.0 5.0 ActiveXコントロール作成専用。フリー。Visual Basic 5.0のプロトタイプ Visual Basic 5.0 5.0 5.0 1997年 Win32 ネイティブコードへのコンパイル機能をサポート Visual Basic 6.0 6.0 6.0 1998年 旧来型 Visual Basic (Win32 ネイティブ) の最後のバージョン Visual Basic 4.0 爆発的に普及が始まったWindows 95用のアプリケーション開発環境の一つとしてリリースされた。ボタンやコンボボックスのような標準コントロールに加え、サードパーティから発売されたコントロールをマウスを使ったGUI操作で配置することでアプリケーション画面を作成することができ、プログラム生産性が高いことが特徴だった。特に、サードパーティ製の高機能なコンポーネントが多く発売され、熟練開発者でなくとも操作性の高いアプリケーションが開発でき、当時のエンドユーザ・コンピューティングに大きな影響を与えた。 技術面で見ると、Visual C++などを用いてCOMのコントロール(OLEコントロール、OCX、後にActiveXコントロールと呼ばれる)を開発し、これらの部品群の組み立てをVisual Basicで行うことが容易にできた。特にExcelなどのアプリケーションをOLEを通じて制御することができるため、帳票を扱うような業務アプリケーション開発の分野で使われることも多かった。 また、Visual Basicで作成されたアプリケーションを実行するために、ランタイムをあらかじめインストールする必要があった。 Visual Basic 5.0 Win32 ネイティブコードへのコンパイル機能がサポートされるようになり、実行速度が大幅に向上した。 開発環境内でのインタープリタ実行も引き続きサポート。 Visual Basic 6.0 ActiveXに完全に対応し、ActiveXオブジェクトを使用することはもちろん作成することも可能。そのため、ActiveXコンポーネントとして公開されていたDAOやADO、oo4oなどを使用して、SQL ServerやOracleを制御することができ、多くのビジネスシーンで使用された。また、バージョン1.0からの経験も蓄積されていたためVisual Basic 6.0を扱えるプログラマ・情報量ともに豊富だった。 ただし、言語仕様が完全なオブジェクト指向言語ではなかったことや、複雑化するシステム環境に十分に対応できなかったり、開発容易性を確保するために機能的な制限があったため以下の不都合が指摘されてきた。 コンポーネントのバージョンの違いからトラブルが起きやすい(DLL地獄)。 基本的にマルチスレッド機能が無い(ActiveX EXEでのみ可能)。 他の言語との情報共有が乏しい。 アプリケーションのインストールが面倒である。 また、Webの普及とともにWebアプリケーションとしてシステムを構築する事案が増え、Java言語がウェブアプリケーションに柔軟に対応していたのに比較すると、Webアプリケーションの開発が面倒という指摘もあった。 これらの事から改良の手が加えられ、VB.NETが誕生した。しかし言語仕様の大幅な改訂のために、VB6とVB.NETとの互換性はほとんど無くなっている。 Visual Basic for Applications 7.0 Microsoft Officeでは、後述するVisual Basic for ApplicationsとしてVisual Basicによるマクロプログラミング環境が採用されている。Office 2007まではバージョン6系列のVisual Basicが採用されていたが、Office 2010では、バージョン番号を7.0としている。 主な変更点として、64ビット環境への対応が挙げられる。LongPtr(32ビット環境・64ビット環境双方でポインタと同じ大きさとなる整数型)、LongLong(64ビット整数型、ただし64ビット環境でのみ使用可能)などのデータ型やそれに伴う変換関数の追加などが行なわれている。 .NET版のバージョン バージョン 7.x に限り Visual Basic .NET と称しているが、それ以降も VB.NET の系列であることに違いはない。 バージョンの履歴 製品名 バージョン 内部バージョン リリース 備考 Visual Basic .NET 2002 7.0 2002年 言語仕様の大幅変更(完全なオブジェクト指向)。実行環境に .NET Framework 1.0 を採用 Visual Basic .NET 2003 2003 7.1 2003年 .NET Framework 1.1 に対応 Visual Basic 2005 2005 8.0 2005年 .NET Framework 2.0 に対応 Visual Basic 2008 2008 9.0 2007年 LINQやラムダ式の導入など言語機能を強化。.NET Framework 3.5 に対応 Visual Basic 2010 2010 10.0 2010年 2010年5月現在での最新版(5月現在ではExpressEditionのみ).NET Framework 4.0 に対応 Visual Basic .NET 2002 2002年には、このVisual Basicを基に強いオブジェクト指向プログラミングの概念を取り入れた新しい言語Visual Basic.NETが開発された。VB.NETはVB6の後継言語とされ、マイクロソフト社の.NET Frameworkという新しい技術基盤に対応している。対応する.NETのバージョンは.NET Framework 1.0。 VB.NETは新たにウェブサーバ用のプログラム、Web用のプログラムが開発出来るなどのネットワーク開発機能が追加された。VB6の後継といっても、豊富なデバッグ機能が追加されたり、中間コード形式になるといった言語設計思想そのものが変わるなど、様々な点で大幅な機能の追加および削除が行われた。 Visual Basic .NET 2003 対応する.NETのバージョンは.NET Framework 1.1。 Visual Basic 2005 製品名称からは「.NET」という名前がなくなったが、上記のVB.NETと連続性がある言語である。言語仕様が強化され、C# 2.0同様にジェネリックの要素が導入されたほか、パーシャルクラスや演算子のオーバーライドなどがサポートされた。また、開発環境も大きく強化されている。対応する.NETのバージョンは.NET Framework 2.0。(開発環境の拡張機能をインストールすることで、.NET Framework 3.0の利用も可能となっている) Visual Basic 2008 同時期にリリースされたC# 3.0に合わせて言語仕様が強化され、構造化照会構文であるLINQや、ラムダ式、匿名型などの要素が追加された。 対応する.NETのバージョンは.NET Framework 3.5。(3.5は3.0および2.0の完全なスーパーセットのため、3.0および2.0のアプリケーション開発も可能となっている) Visual Basic 2010 対応する.NETのバージョンは.NET Framework 4.0(3.5、3.0、2.0での開発も可能) 旧来型Visual Basicのサポート 旧来型Visual Basicの最終バージョンであるVisual Basic 6.0は、2004年3月29日にService Pack 6がリリースされたのち、2005年3月31日にメインストリームサポート期間を終え、2008年4月8日に延長サポートの期間を終えたしたがって現在は開発環境のサポートを打ち切られている。 しかしながら、後継のVB.NET以降との互換性がほとんどなく、他開発環境への移行も難しいことから、マイクロソフトはWindows VistaでのVisual Basic 6.0の開発環境の実行をサポートしているしたがって現在は開発環境のサポートを打ち切られている。 しかしながら、後継のVB.NET以降との互換性がほとんどなく、他開発環境への移行も難しいことから、マイクロソフトはWindows VistaでのVisual Basic 6.0の開発環境の実行をサポートしている アプリケーションの実行環境 Visual Basicで作成したアプリケーションは、それ単体だけでは実行することができない。 バージョン6.0以前については、アプリケーション作成に使用したVisual Basicのバージョンに対応するランタイムライブラリのインストールが必要である。バージョン 7.0 (2002) 以降で作成したアプリケーションを実行するには、Visual C#やVisual J#と同じ実行基盤である.NET Frameworkが別途必要となる。 いずれも、作成したアプリケーションのパッケージに同梱して配布することがマイクロソフトにより認められている。 Visual Basic 言語が採用されているその他の環境 VBA (Visual Basic for Applications) 個々のアプリケーション用のマクロ環境として実装されるVisual Basic。反復操作を自動化するだけでなく、Windowsのフォームやボタンなどのコントロールをドキュメント内に配置して、ドキュメント編集のためのGUIを構築することも可能となっている。言語仕様としては、本家のVisual Basicで.NET以降がリリースされたのちも、ドキュメントの互換性を保つ目的で、Visual Basic 6.0ベースのものが実装されている。ExcelやAccess、WordなどMicrosoft Officeの多くのアプリケーションで実装されているほか、独自に開発したアプリケーションにVBAを搭載することも可能で、サードパーティ製のアプリケーションにVBAが搭載される場合もある。本家Visual Basicとの大きな違いは、搭載アプリケーション内でしか実行できない点にある。 VBAでは、各アプリケーションをオブジェクトとして操作できるようになっており、Excelを例にとると、「ファイル全体」を表すBookクラス、「スプレッドシートのセル」を表すRangeクラスなどがVBAから操作できる。 VBScript (Visual Basic Scripting Edition) Visual Studio マクロ Microsoft Visual Studioでは、繰り返し発生する操作を自動化するために、Visual Basic言語によるIDEマクロ環境が用意されている。前述のVBAとは異なり、Visual Studioのバージョンに応じたVisual Basicが使用できるようになっており、Visual Studio .NET以降はVB.NETを使って.NET Frameworkを利用できるようになっている。なお、各マクロプロジェクトは、テキストファイルのソースコードではなく、.vsmacrosファイルにメタデータとしてバイナリ形式で保存されるようになっているが、各モジュールをVBのソースファイル (.vb)としてエクスポートあるいはインポートすることもできる。 VBA(Visual Basic for Applications) マイクロソフト社製のMicrosoft Officeシリーズに搭載されているプログラミング言語 パラダイムプログラミングパラダイム 登場時期1993 設計者マイクロソフト 開発者マイクロソフト 最新リリース7.0 (Office 2010) 型付け型システム 影響を受けた言語QuickBASIC Microsoft Visual Basic プラットフォームMicrosoft Windows Mac OS X ライセンスProprietary EULA VBA を使用することで、ExcelやAccess、Wordなどを使用した定型業務を自動化することができる。VBAを用いてユーザーが関数を作成することもできる(ユーザー定義関数という)。また、ユーザー独自のフォームを作成することができ、様々なプラグインを組み込むことでアプリケーションの機能をカスタマイズすることなども可能である。 Microsoft OfficeシリーズのアプリケーションにはVBA用の統合開発環境が付属しているため、知識があれば誰でも手軽にプログラミングが始められる(知識がない場合でも、マクロの自動記録の機能を使って定型業務の自動化を行うことができる)。基本的にはインタプリタ型の言語であるため、コンパイル(ビルド)の作業は不要である。 Microsoft Office専用という印象が強いが、実際にはマイクロソフト社からしかるべきライセンスを取得することで他のアプリケーションに組み込むことも可能である。実際、マイクロソフト社に買収される前のVisioにも搭載されていた。CADソフトのAutoCADやMicroStation V8等にも搭載されている。 1994年、マイクロソフトは Excel 5.0 とともに VBA をリリースした。それは従来までのマクロ言語の代替でしかなかった。 しかし、翌年にリリースした Office95や、1997年のOffice97において、Excel以外のアプリケーション、すなわちAccessやWordにもVBAを搭載していった。合わせてVBAの仕様拡張も行われ、VBAはOffice製品に共通したプログラミング言語として確立される。 VBAは、同社のVisual Basicから派生した言語であり、Visual Basicと同様、ActiveXを使用することで既存資源の流用も可能である。ただ、近年マイクロソフト社はActiveX/Component Object Modelから.NET Frameworkへの転換を進めており、Microsoft Office System 2003には従来版にあった「Developer Edition」(VBAカスタムアプリケーション開発用のパッケージ)が存在せず、替わりにVisual Studio Tools for the Microsoft Office Systemと呼ばれる製品が出荷されている。 コード例 以下は、Excelにおいて、「Alpha」という名前のワークシートを削除するVBAの例である。 Application.DisplayAlerts = False Worksheets("Alpha").Delete Application.DisplayAlerts = True また、Excelで以下のコードを実行すると、セルA1からI9の範囲に掛け算九九の表を作成することができる。 Dim i As Integer Dim j As Integer For i = 1 To 9 For j = 1 To 9 Cells(i, j).Value = i * j Next Next 条件によって4色以上に色を塗り分けるときも、VBAを利用する(3色以下のときは一般機能の「条件付き書式」を使用するのが望ましい)。以下のコードを実行するとセルB2からE15までの範囲内のセルを5以下→水色、6以上10以下→明るい緑、11以上15以下→黄色、16以上→赤と塗り分けることができる。 Dim myCell As Range For Each myCell In Range("B2 E15") Select Case myCell.Value Case Is = 5 myCell.Interior.Color = RGB(0, 255, 255) Case 6 To 10 myCell.Interior.Color = RGB(0, 255, 0) Case 11 To 15 myCell.Interior.Color = RGB(255, 255, 0) Case Is 15 myCell.Interior.Color = RGB(255, 0, 0) End Select Next 以下は、VBAと共にExcel毎プログラムを終了するVBAの例である。 Application.Quit ユーザー定義関数 VBAを用いて、ユーザーが新たに関数を作成することもできる。ユーザー定義関数を作成するにはFunctionプロシージャを用いる。以下はHERONという名でヘロンの公式を用いるユーザー定義関数のコードである。 定義したユーザー定義関数は通常のワークシート関数同様、数式の中で用いることで呼び出す。この例で言えば、=HERON(3,4,5)とセルに入力すると、数式を入力したセルに演算結果として6と出力される。 Function HERON(辺1 As Double, 辺2 As Double, 辺3 As Double) As Variant Dim s As Double s = (辺1 + 辺2 + 辺3) / 2 HERON = Sqr(s * (s - 辺1) * (s - 辺2) * (s - 辺3)) End Function VBAの問題 VBA で記述したプログラムは Excel などのファイルの一部として格納される。そのため、これらのファイルを開くと同時に VBA で記述した悪意のあるプログラム(マクロウイルス)が自動実行されるようになっていると、重要なファイルが削除されるなど、クライアントが大きなダメージを受けることがある。この危険性は、各アプリケーション上でのセキュリティ設定や、ウイルス対策ソフトの導入などによってほぼ回避することができる。
https://w.atwiki.jp/soilstay/pages/10.html
Excel 覚書 栽培記録 収穫記録に対応する播種記録を検索する
https://w.atwiki.jp/ipubluedictionary/pages/30.html
新規でExcelを作成 オブジェクトの作成、解放は以下のような感じ Dim xls As Object Set xls = CreateObject("Excel.Sheet") xls.SaveAs "てすと.xls" xls.Application.Quit Set xls = Nothing エクセルのオブジェクト、メソッド、プロパティについては VBA(Excel) を参照の事。
https://w.atwiki.jp/dotcom/pages/58.html
ExcelじゃなくてAccessでやったほうが絶対いいよって思うようなことを頼まれることもしばしば。comです。 別にAccessフリークだからってことじゃないの、ExcelのVBAには限界があるってだけ。 でもまあ大体皆さん新しいソフトは使いたくないとかいって既存のものでやりたがるんだ。 どうしてもExcelで!なんていわれたら、VBAの動きが遅い時にこれを試してみて。 VBA高速化プロジェクト 関数の計算方法を切り替えてみて VBA高速化プロジェクト VBAを実行する前に関数の計算方法を手動にしておくと処理速ーいになるの。 Excelのシートのセルに関数がたくさん設定されてたとするじゃありませんか。 そのシートに値を書き込んでいくようなVBAを組むとするじゃありませんか。 しかもその書き込んだ値で関数で合計とか出してるとするじゃないですか。 そんな状況でそのVBAを動かすと、実行中の関数の再計算でえらい処理時間が遅くなっちゃうの。 あらびっくり。 ためしに関数の入ってないシートと比べると途中でトイレ行って帰ってきてもまだ終わらないVBAとまばたきひとつしたくらいで終了しちゃうのくらいの違いがあるの。 関数の計算方法を切り替えてみて 具体的に何をするかというと VBAを実行する前に、メニューの「ツール」→「オプション」の「計算方法」タブの[計算方法]を手動にしておくといいの。 でもVBA実行し終わったら元に戻しておかないと関数の入ったセルが計算しないのでこれは面倒。 てなわけでVBA自体に組み込んでみたらどうでしょう? VBAの最初に (w_calをdimしときましょ。 変数w_calの中に今のアナタのExcelソフトで設定されている計算方法を退避しておきます。 w_cal = Application.Calculation アナタのExcelソフトの計算方法を「手動」に変更します。 Application.Calculation = xlManual VBAの最後に VBAの最初に変数w_calに入れたアナタのExcelソフトの状態に戻します。 Application.Calculation = w_cal この3行の文をいれておけば大丈夫。 xlManualってのが手動ってことです。 w_calに退避したのはVBAを使うPCの持ち主が「テーブル以外手動」とかマニアックな設定がお好きな場合もあるから。モトの状態に戻しておけば再計算がみょーな動きしてるとか困惑することもないです。 問題はこの文章を入れたVBAがエラーになったときや途中にExit Subなんてあったとき。 最後の文を実行しないと最初に手動にしたままになっちゃうから「あれえ?」てことになる恐れが。 Exit Subの前とかに最後の文を入れていくってのもテ。 ちなみにF9を押すと関数は再計算してくれるのよ。 comったら前置き長すぎとかタイトル長すぎとか脱線しすぎとか改行しろよなんてメールはお受けしておりません。てかこれブログなんだからメールじゃなくてコメントでよろしく♪ 語尾の音符がうさんくさいとかいうコメントも却下!
https://w.atwiki.jp/wassyoi1209/pages/21.html
VBA ここはチェックしておきましょう。 VBA解説サイト モーグ 速攻テクニック集 Excelでお仕事! Office TANAKA Excel VBA 入門講座へようこそ!! すぐに役立つエクセルVBAマクロ集 ここまで。
https://w.atwiki.jp/kuronekosoft/pages/19.html
黒猫 SQL Studio で Microsoft Excel に接続するには、OLE DB Provider を使用します。 ドライバは、Microsoft提供の Microsoft Jet 4.0 OLE DB Provider を使用します。 [データベース]-[データベースに接続...]をクリックします。 [データベース接続]ダイアログの[OleDB接続]タブを選択し、[新規追加]ボタンをクリックします。 [接続名]に接続を識別する任意の名前を入力します。 [接続文字列の編集]ダイアログで[接続文字列]の[...]ボタンをクリックします。 OLE DB プロバイダの一覧から、Microsoft Jet 4.0 OLE DB Provider を選択します。 [次へ]ボタンをクリックします。 [データベース名を...]ボックスの[...]をクリックします。 [ファイルの種類]を[すべてのファイル]に変更します。 接続するxlsファイルを選択します。 [ユーザー名]と[パスワード]を入力します。(空白でOK) 必要に応じて[パスワードを保存する]にチェックします。 [すべて]タブを選択します。 一覧から[Extended Properties]を選択し、[値の編集]をクリックします。 [プロパティの値]に Excel 8.0;HDR=YES; と入力し、[OK]ボタンをクリックします。 [接続のテスト]ボタンをクリックして、接続をテストします。 [OK]ボタンをクリックします。 [接続文字列の編集]ダイアログの[OK]ボタンをクリックします。 [データベース接続]ダイアログの[接続]ボタンをクリックします。 Excelシート名がテーブル名に対応します。 テーブル名の末尾には自動的に$が付きます。 SQLを発行する場合は、引用符で括る必要があります。 例) SELECT * FROM [Sheet1$] レコードの挿入・更新は可能ですが、削除はできません。 ご自由にコメントをお書き込みください 名前 コメント
https://w.atwiki.jp/tomokazu0525/pages/323.html
■最終更新日時2011-03-10 ここを編集 VBAからXML(XTHML)を扱う。 ■目次 初期設定など VBAでXMLをダウンロードするVBAからXML WEB ページフッタこのページの1階層上のページ このページの1階層下のページ このページに含まれるタグ このページへのアクセス数 ■本文 初期設定など VBAでXMLを使う VBEでXML6.0の参照設定をし、XPATH式を使えるようにしているよう。 コンピュータにインストールされた MSXML パーサーのバージョンを判別する DOMを利用してXMLデータへアクセス ほかのブックで使用できる形式で Web クエリを保存する DOMのメソッド一覧CommentsAdd Star DOMのプロパティ一覧 DOMプロパティ VBAでXMLをダウンロードする Web ページをダウンロードする方法~ MSXML 編~ VBAでXML文書のデータ個数取得 VBAからXML WEB XML Web サービスの概要(XML Web サービスとは何か?) Office XPでXML Webサービス Microsoft Excel 2002 から XML Web サービスを利用する ここを編集 ページフッタ このページの1階層上のページ このページの1階層下のページ このページに含まれるタグ EXCEL VBA XML このページへのアクセス数 今日: - 昨日: - これまで合計: -
https://w.atwiki.jp/excelvba/pages/17.html
27 :デフォルトの名無しさん:2011/02/24(木) 15 27 19.57 【コラム】あまりに便利すぎた・・・Excel VBAの「行き詰まり」問題〔07/02〕 http //pc11.2ch.net/test/read.cgi/pcnews/1246498806/ 検索してたらこんな切ないスレがあったんだけど、今からExcelマクロ勉強するのって無駄? まあ、ちょっと頑張って正規表現と両方憶えれば万能なんだけれども・・・ 28 :デフォルトの名無しさん:2011/02/24(木) 17 07 59.98 無駄ってことも無いとは思うが、昔納品した客から Excelのバージョンアップしたら色々問題が出て VBA使うPCのExcelを前のバージョンにしたと聞いた 29 :デフォルトの名無しさん:2011/02/24(木) 18 28 27.62 27 このスレを見てればわかるとおり、VBAのエキスパートになる必要はないけど Excelを使うならVBAは知ってた方が捗る 30 :デフォルトの名無しさん:2011/02/24(木) 18 37 52.75 このスレを見てればわかるんですか? 31 :デフォルトの名無しさん:2011/02/24(木) 19 41 43.64 VBAのエキスパートにならなくても ここで質問すれば解決って意味でしょ 71 :デフォルトの名無しさん:2011/03/01(火) 10 29 40.84 問題で月別売上集計のマクロを作成しないといけないのですがわからないのでどなたかおしえてください! 例えばセルB2からセルB299までに1年分の日付がランダムで入力されてるとします。 で、セルK2からセルK299に金額がランダムで入力されています。 マクロを使って月別の売上を出すにはどのようにしたらよろしいですか? 説明が下手で申し訳ないです 72 :デフォルトの名無しさん:2011/03/01(火) 10 56 03.69 VBA使わずDSumでいけるという話だが あえてなおVBAならWorksheetfunction.DSum 73 :デフォルトの名無しさん:2011/03/01(火) 11 04 52.81 ありがとうございます! VBAでしないといけないのです。。。 とりあえずWorksheetfunction.DSum でやってみます 74 :デフォルトの名無しさん:2011/03/01(火) 11 54 19.80 何度もすみません 1月の集計 ○○円 2月の集計 ○○円 ・・・ と続くのですが月別にするのがわかりません。。。 またアウトラインを使わないといけないのですが 1、総計 2、月別 3、全体の表示 としないといけないのですがわかりません。 どなたかおしえてください 75 :デフォルトの名無しさん:2011/03/01(火) 12 48 31.73 74 アウトラインって集計か? 集計とか統合はウンコだから覚えなくてよい。 ピボットテーブルを覚えりゃよい。 月でグループ化すれば簡単だ。 ピボットテーブル使えない人は日付でソートして同じ月の間だけ加算していくマクロになるが,、ピボット覚えた方が楽。 76 :デフォルトの名無しさん:2011/03/01(火) 12 55 41.90 VBAでやるにしたって、ソートなんて必要ないだろ… 月をインデックスとした配列に順番に足すだけ 77 :デフォルトの名無しさん:2011/03/01(火) 13 07 26.23 76 1年分の月に関しては確かにそうだな。 一般的なピボットの内部ロジックを書いた。 78 :デフォルトの名無しさん:2011/03/01(火) 13 11 52.15 複数年の月別でも列が年で行が月とかなら次元配列でもいいか。 79 :デフォルトの名無しさん:2011/03/01(火) 13 12 42.21 上は2が抜けた。 80 :デフォルトの名無しさん:2011/03/01(火) 15 32 01.88 問題でって書いてるから、まあなんかの実習問題なんだろうけど それってVBAでやれって問題なのか? VBAでやるのにアウトライン使えとか普通ないだろ エクセルの機能とかの実習ならむしろVBAつかっちゃいかんのじゃないか 81 :デフォルトの名無しさん:2011/03/01(火) 20 32 10.83 74 VBAで「ピボット操作して集計シートにコピペ」までやれば 「マクロを使って月別の売上を出」したことにならないかな。 同じ結果を出すなら、自作コードでやるより エクセルの機能を使ったほうが明らかに動作速いし。 82 :デフォルトの名無しさん:2011/03/01(火) 21 23 33.63 ワンタッチで全部済むと とても気分はいいけどな 83 :デフォルトの名無しさん:2011/03/02(水) 01 22 15.86 81 月別なら自作の方が速いだろ? 112 :デフォルトの名無しさん:2011/03/03(木) 21 07 27.25 Excel 2003と2007、XP SP3またはVistaが対象です。 諸事情あって、VBAからWin32 APIを直接使っています。 DIBを使って画像処理をしているのですが、ワークスペース上の画像を 直接LoadImage(API)するような荒業ってありますでしょうか。 今は、SaveAsを使いxlhtml形式でまるごと保存>そのうち画像ファイルをLoadImageでメモリ上にロード >保存しているファイルを削除・・・・という方法でやっていますが、どうにも泥臭くて・・・。 139 :デフォルトの名無しさん:2011/03/04(金) 20 49 05.69 ATPVBAEN.XLAM!Histogramで作成したヒストグラムのグラフを 任意の位置、大きさに表示することは可能ですか? 140 :デフォルトの名無しさん:2011/03/05(土) 00 01 17.85 WorkSheetFunction.matchって#N/Aは返さないんだよな? on error resume next val = WorkSheetFunction.match blnIsFind = iif(err.number=0, true,false) on error goto 0 みたいな使い方にしないと駄目? 145 :デフォルトの名無しさん:2011/03/05(土) 22 37 51.89 ビジュアルプログラミング言語というものがあるようですが 将来的にEXCELもそんな感じにならないものでしょうか? 146 :デフォルトの名無しさん:2011/03/06(日) 09 33 14.07 そんな余裕があるなら、とっくにVBAから.NETベースに切り替わっていたと思う。 147 :デフォルトの名無しさん:2011/03/06(日) 21 06 06.11 .NETに移行しやすいVBAの記述法 ・BASE 1を使わない ・Variantを使わない ・クラスモジュールを使う ・コレクションとかディクショナリ、FSOを使う 148 :デフォルトの名無しさん:2011/03/06(日) 22 07 55.91 >BASE 1を使わない むしろ配列のインデックス0を使わない(作らない)方が分り易い。 Excelが絡む時は、VB.NETでも下限値1の配列を作ることがあるな。 >クラスモジュールを使う 使う事で大分判り易くなる時くらいか。 VBAの実装は中途半端過ぎて、よっぽどでないと使う気が起こらない。 149 :デフォルトの名無しさん:2011/03/06(日) 22 58 21.00 セルの値がVariant型だからVariant使うのはしょうがないもんね。 150 :デフォルトの名無しさん:2011/03/07(月) 01 43 06.31 つーかExcel VBAやってる人が VB.Net移行なんてするの? VSTOでも使う気? 151 :デフォルトの名無しさん:2011/03/07(月) 01 52 56.98 そんなもん人によるだろ 152 :デフォルトの名無しさん:2011/03/07(月) 01 53 52.74 例えばどんな場合? Excel捨てるの? 153 :デフォルトの名無しさん:2011/03/07(月) 08 06 23.39 149 FSOで取得すりゃ全てString 154 :デフォルトの名無しさん:2011/03/07(月) 08 32 44.58 その前にVBAをVBにしてくれ 変な制限が多すぎる 161 :デフォルトの名無しさん:2011/03/07(月) 13 15 24.41 152 VBAじゃ無くてVB6以前から移行するのはよくあるよ 199 :デフォルトの名無しさん:2011/03/11(金) 00 32 16.35 保護について教えて下さい。 シートを保護する時にロックをしてるセルを選択出来なくなる する奴あるじゃないですか? あれをやると時々エクセルの挙動がおかしくなります。 矢印キーが効かなくなったり アクティブセルの周りに普段なら出る黒い枠線が出なかったりとか。 スクロールロックが掛かってるとかそんなんじゃないです。 ロック有り無し関係なくして、シートイベントで制御した方が良いでしょうか? 前から時々なってて、ぐぐって調べたんですが 特にこれと言って解決策が見つかりません。 これだという絶対的な発生条件も不明です。なったりならなかったりします。 201 :デフォルトの名無しさん:2011/03/11(金) 12 39 01.06 199 VBA? 203 :デフォルトの名無しさん:2011/03/12(土) 07 46 57.11 別のPCのエクセル2003で作成したマクロを、別のPCのエクセル2010で動かそうとすると、 「マクロが実行できません。このブックでマクロが使用できないか、 またはすべてのマクロが無効になっている可能性があります。」 と表示されます。エクセル2010で作成したマクロは2010で当然動きます。 なにが理由か分かりません、助けてください。 204 :デフォルトの名無しさん:2011/03/12(土) 14 18 36.86 203 まくろが無効になってるから。 マクロ有効ファイルで保存しなおすか、 オプションでマクロの設定を変更するか、 信頼できる発行元の設定をすればいける。 205 :デフォルトの名無しさん:2011/03/12(土) 14 21 17.24 無効になってたら2010も無理なんじゃね? 206 :デフォルトの名無しさん:2011/03/12(土) 14 56 38.84 204 信頼できる発行元以外は全て設定しました。 205 なぜ無効になるのでしょうか?なんか分かります? 207 :デフォルトの名無しさん:2011/03/12(土) 15 42 26.87 なんか2010になってそこらへん変わってるな それで駄目ならこれとかやってみれば。 http //okwave.jp/qa/q6197506.html 208 :204:2011/03/12(土) 16 57 07.81 206 .xlsm形式でブックの保存をし直してみましたか?? 209 :デフォルトの名無しさん:2011/03/12(土) 19 17 14.67 207 うん。試してみます。 208 はい。マクロ有効のファイルにしましたがダメです・・・。 210 :デフォルトの名無しさん:2011/03/12(土) 19 26 05.43 207 だめでした・・・。 211 :デフォルトの名無しさん:2011/03/13(日) 21 36 27.84 210 なんでかって言われると、マクロを悪用したトラブルが世界中で起きたから、 簡単には使えないように制限をかけたんだよ。 マクロを使うには、まずマクロ有効ブックとして保存しなおしたあと、 そのファイルを保存したフォルダを「信頼できる場所」に登録しなきゃいけない。 212 :デフォルトの名無しさん:2011/03/13(日) 22 06 13.43 211 有効ブックにして信頼できる場所にしています・・・。 213 :デフォルトの名無しさん:2011/03/14(月) 03 17 11.77 212 もしかして64bit版Excelだったりしない? 32bitのマクロはそのままだと使えない機能があるんだけど 217 :デフォルトの名無しさん:2011/03/18(金) 23 43 20.20 BMPのピクセル情報を取得して1ピクセル=1セルとして扱って エクセルで画像を再現できると聞いたのですが詳しく教えてくれませんか? VBAでそういうことできるらしいのですがまったくわかりません 誰かわかりやすい解説サイトのURl貼るか解説してくれませんか? 218 :デフォルトの名無しさん:2011/03/19(土) 00 12 19.73 217 別に難しいことじゃないだろ、そんぐらい独学でやれよ BMPのピクセル情報を取得する方法を調べる セルの背景色を設定する方法を調べる 分ったら、とりあえずBMPのピクセル情報を一つ一つ調べて、それに基づいて セルの背景を設定していく ただそれだけだ 219 :217:2011/03/19(土) 10 03 18.56 その調べるってのがわかんないんですけど… 馬鹿ですかあなた? 224 :デフォルトの名無しさん:2011/03/19(土) 21 45 36.13 218 ありがとう 調べても急にプログラミング言語が云々とか出てきて 具体的にどういうことをしてそうなるのかがわからなかったんだ それがわかっただけでもマジ助かったわ サンクス 243 :デフォルトの名無しさん:2011/03/23(水) 18 01 16.51 転職用のアピール材料として、アプリを構築した。そんで、提案書とサルでも分かるような仕様書も作った。 転職の際、同じことした御方みえますか? 259 :デフォルトの名無しさん:2011/03/26(土) 17 50 35.81 243 > 転職用のアピール材料として、アプリを構築した。そんで、提案書とサルでも分かるような仕様書も作った。 > 転職の際、同じことした御方みえますか? あるよ 260 :デフォルトの名無しさん:2011/03/26(土) 20 39 43.48 243 運悪くコードオタクとかがその会社にいたら、中身見られて汚いコードだから不合格とか言われるかもw Selectだらけのど下手でもプロとしてやってる奴いたりするから会社次第とは思うが。 261 :デフォルトの名無しさん:2011/03/26(土) 21 49 10.81 俺は恥ずかしくてそんな事出来ない。 新卒だったら考えるけど 262 :デフォルトの名無しさん:2011/03/26(土) 22 40 16.83 261 お前のコードはそんなに恥ずかしいのか? 263 :デフォルトの名無しさん:2011/03/26(土) 23 05 05.69 コードじゃなくて、そういう幼稚なアピールの仕方が恥ずかしいのでは? 264 :デフォルトの名無しさん:2011/03/26(土) 23 41 37.57 ならどうやってアピールする? 265 :デフォルトの名無しさん:2011/03/26(土) 23 43 30.52 それは自分で考えるべきだ 266 :デフォルトの名無しさん:2011/03/27(日) 10 55 16.31 他人と同じ事やったんじゃアピール弱いもんな 267 :デフォルトの名無しさん:2011/03/27(日) 12 23 49.91 デザイナーとかだと作品を持ってくるのは当たり前みたいだが。 プログラマの能力を見るにはコードを見るのが一番だけど、 持ってこさせないのは面接官がコードを読めないんだろうな。 268 :デフォルトの名無しさん:2011/03/27(日) 14 35 32.50 面接するのは人事の人間であってプログラマが見るわけじゃない(一般的には) 269 :デフォルトの名無しさん:2011/03/27(日) 14 44 35.26 267 そんなのは当たり前だが、プログラマがVBAってのがダメダメすぎw つーかVBAじゃまともに能力計れないし 小学生のソフトボール投げが、大人になると砲丸や槍になるように VBAで能力計れるのは、精々中学生1年生まで 270 :デフォルトの名無しさん:2011/03/27(日) 14 53 09.07 少しは評価してやれよ VBAは便利だぞ 271 :デフォルトの名無しさん:2011/03/27(日) 15 02 09.60 VBA自体は評価してるし、便利なのも認める しかしVBAでアピールしようとする奴は、評価に値しない 272 :デフォルトの名無しさん:2011/03/27(日) 15 16 38.45 転職先がプログラマだとはどこにも書いてない 構築したアプリがVBAだとはどこにも書いてない まあ、スレ違いだからこれ以上はよそでやってくれ 273 :デフォルトの名無しさん:2011/03/27(日) 15 26 43.86 転職先がプログラマだとはどこにも書いてない そこはどうだろうと関係ない部分だけど? 構築したアプリがVBAだとはどこにも書いてない ここはVBAスレなんだから、VBA以外でアピールする話をVBAスレでしてるなら まともな判断能力が欠如してるってことで、それこそ就職どころじゃないw 252 :デフォルトの名無しさん:2011/03/26(土) 07 20 50.44 おたずねします。 グラフエリア上にツールバーからコンボボックスを作りました。 ①[コントロールの書式設定]でリストの入力範囲を設定し、 ②[マクロの登録]で、VBエディッタにコードを作成できたのですが、 コンボボックスでクリックされた値を②のサブプロシージャ-で取得する 方法がわかりません。ヒントでよいので、お願いします。 253 :デフォルトの名無しさん:2011/03/26(土) 10 41 35.15 追伸: つまり、グラフエリア上に作成したコンボボックスのコードとして記述するための名前がわからないのですが、、、 276 :デフォルトの名無しさん:2011/03/27(日) 20 24 31.26 すいませんよくわかりません もうちょっと分かりやすくお願いします。 初心者なんで 277 :デフォルトの名無しさん:2011/03/27(日) 21 23 18.20 「初心者」が免罪符になるって? 278 :デフォルトの名無しさん:2011/03/27(日) 21 28 29.64 はぁ、もういいです 279 :デフォルトの名無しさん:2011/03/27(日) 22 19 56.33 何かスレッド荒れてきたな。 態度でかい奴ばかり 280 :デフォルトの名無しさん:2011/03/27(日) 22 30 06.84 上から目線で見下してる回答者も増えたよな 281 :デフォルトの名無しさん:2011/03/28(月) 00 16 17.14 ほんとにそうですね。 例えば、自己PRとしてアプリ提出することが何故いけないの?相手に売り込むための、プレゼンの一環だと思うし。 例えば、初心者だからと前置きしていて不遜な態度をとっていないのにもかかわらず、上から目線とか余裕ないですよね。 282 :デフォルトの名無しさん:2011/03/28(月) 00 27 17.74 いけないことだなんて誰も言ってないのに被害妄想が強すぎだな なんでそんなに余裕がないの? 283 :デフォルトの名無しさん:2011/03/28(月) 06 45 07.89 面接官が率直に思うだろうこと 企画系の募集じゃない場合 (ここでプレゼンとか何様だよ) 面接官がプログラマーの場合 (うわVBかよ) 面接官がプログラマーじゃない場合 (これ採用の評価基準にしろと?じゃめんどいから不採用で) アプリ提出が前提でよっぽど自信作じゃない限り危険 284 :デフォルトの名無しさん:2011/03/28(月) 10 08 05.00 否定するおまえは、ビジネスライクなまともなアプリ作ったことないだろ。あ、そもそも作る能力ないか。かわいそうに。 285 :デフォルトの名無しさん:2011/03/28(月) 10 17 38.05 負け犬の遠吠え? VBAスレでビジネスライクなまともなアプリとか言ってもカッコワルイだけだし VBAスレなのにVBA以外での話だなんて言い訳しだしたらもっとカッコワルイw 286 :デフォルトの名無しさん:2011/03/28(月) 10 47 27.91 VBAけなす奴は一体、何ののためにVBAという言語つかってるわけ? 287 :デフォルトの名無しさん:2011/03/28(月) 11 26 09.69 Officeの標準マクロ言語だから使ってるだけで あえてVBAを選択して使ってるわけじゃないし 中にはVBAを簡易開発環境代わりにしてなんでもVBAでやる奴も居るけど 俺はOfficeアプリが必要な場合以外はVBAなんて使わないし 288 :デフォルトの名無しさん:2011/03/28(月) 12 45 29.11 言語の優劣とかまだ言ってるやつがいるのか Windowsのプログラミングはライブラリで決まる 何から呼び出しても結果は一緒 あと、なんかもう開発環境をわざわざインストールするのがめんどい Officeは最初から入ってるし 最近のマシンは処理速度も十分 VBAを嫌ってるのは知識の古い老害だけ 289 :デフォルトの名無しさん:2011/03/28(月) 12 59 45.38 C,C++,C#,javaとかそこそこ使えるようになるとVBAを見下して 俺はすごい、レベル高いって思いたくなっちゃうんだよな まあ、動物的本能というか感情の問題だな 290 :デフォルトの名無しさん:2011/03/28(月) 13 21 41.55 生産性が一番高い言語はExcelVBA データを共有しないスタンドアロンアプリではExcelVBAが最強 291 :デフォルトの名無しさん:2011/03/28(月) 13 25 48.49 283 プログラマ募集でソース付きで作品を提出させればいい判断材料になりそうだけどな 292 :デフォルトの名無しさん:2011/03/28(月) 13 29 16.85 VBAしか使えない子がキレちゃったねぇ 滑稽極まりないw 293 :デフォルトの名無しさん:2011/03/28(月) 13 41 50.90 Officeは最初から入ってるし Officeは最初から入ってるし Officeは最初から入ってるし 何時からOS標準になったんだ? 294 :デフォルトの名無しさん:2011/03/28(月) 15 02 55.38 ここまで全部俺の自演 295 :デフォルトの名無しさん:2011/03/28(月) 15 17 53.07 まともに呼べないライブラリが多いのもVBAの弱み 296 :デフォルトの名無しさん:2011/03/28(月) 15 31 03.12 APIリファレンス 297 :デフォルトの名無しさん:2011/03/28(月) 15 42 53.29 なんだ、やっぱり解ってないのか 298 :デフォルトの名無しさん:2011/03/28(月) 16 37 39.07 VBA勉強したいけど2003と2010で互換性低かったりとかだったら不安 299 :デフォルトの名無しさん:2011/03/28(月) 17 21 33.69 298 99%は一緒だから安心しろ 300 :デフォルトの名無しさん:2011/03/28(月) 18 51 04.92 290 言語じゃねーよ 301 :デフォルトの名無しさん:2011/03/28(月) 19 56 33.06 : 302 :デフォルトの名無しさん:2011/03/28(月) 20 23 54.55 299 サンクス 303 :デフォルトの名無しさん:2011/03/28(月) 21 48 00.87 自分だけ使うもの作るとき、クラス使おうか悩んで最終的に構造体に逃げる俺 モジュールすら公開しないのに、わざわざ使う気力が湧かないわ 304 :デフォルトの名無しさん:2011/03/29(火) 00 24 55.97 クラスは難しいよな。VBA極めるくらいの気がなきゃ、下手に手を出さないのが得策かも 305 :デフォルトの名無しさん:2011/03/29(火) 01 18 24.75 そういえばVBAにもクラスがあるな。 現場で使ってるのを見たことがあるけどその時は クラスとか全然知らなかったから全く分からなかった。 JAVAとか勉強した後にこのサイト見るとそんなに難しくなさそうだ http //codezine.jp/article/detail/499 VBAしかやったことがない人にはクラスは難しそうに見えるけど JAVAを勉強すればそんなに難しくない事に気がつく。 306 :デフォルトの名無しさん:2011/03/29(火) 01 24 01.89 VBA(とVB6)のクラスは独特すぎて他言語環境に慣れてる人には辛いかも 307 :デフォルトの名無しさん:2011/03/29(火) 04 40 54.10 クラスはコントロール大量に作るぐらいしか役に立たない 構造体はapiの引数にしかたなく使う感じ どっちも配列使うのに制限があって使い勝手が悪い 308 :デフォルトの名無しさん:2011/03/29(火) 06 48 07.29 クラス作ると見やすくなる 俺の場合はそれだけだな 309 :デフォルトの名無しさん:2011/03/29(火) 07 01 51.83 俺は連想配列にぶち込むオブジェクトとしてクラス使うことが多いかな 構造体と似た、ほぼグローバル変数のみのクラスだが、 代入できる値の範囲を制限したり、値の代入に伴って行う簡単な処理を置いたり 特定の値が入った場合にRaiseEventでイベント起こしてやったり 307も言ってる仮想コントロール配列も、結局はコレだしね 310 : 忍法帖【Lv=2,xxxP】 :2011/03/29(火) 07 25 48.04 !ninja 311 : 忍法帖【Lv=15,xxxPT】 :2011/03/29(火) 09 18 56.22 !ninja 312 :デフォルトの名無しさん:2011/03/29(火) 10 36 10.36 エクセルで散布図グラフを作成した時に 近似曲線の追加からグラフに傾きと切片の式を追加できるとおもうんですが この式が表示されるテキストボックス(データラベル?)の位置を取得 したいと考えています。 その際、この式の位置やサイズを取得するときのコントロールオブジェクトを 教えてください。 314 :デフォルトの名無しさん:2011/03/29(火) 16 08 25.84 自己解決しますた 318 :デフォルトの名無しさん:2011/03/29(火) 19 32 25.08 Excel2007 ループで処理実行中の間、マウスカーソルを砂時計が回っている奴に変えたいのですが、 どうすればよろしいんでしょう? 320 :デフォルトの名無しさん:2011/03/29(火) 20 04 38.14 318 マウスカーソルの変更はVBAではなくVBの分野。( 3参照) スレ違い。 321 :デフォルトの名無しさん:2011/03/29(火) 20 24 15.49 318 Application.Cursor = xlWait 砂時計 ループ処理 Application.Cursor = xlDefault 通常 322 :デフォルトの名無しさん:2011/03/29(火) 20 29 02.84 320 … 321 ありがと 326 :デフォルトの名無しさん:2011/03/29(火) 21 57 12.95 321 俺もそれだと思ったんだが、俺のExcel2010じゃ砂時計にならないんだよな。 丸いのがぐるぐる回ってる。 砂時計はどうやって出すんだろ? 329 :デフォルトの名無しさん:2011/03/29(火) 23 38 26.78 326 APIでアイコンセットを切り替え 313 :デフォルトの名無しさん:2011/03/29(火) 16 02 41.54 使用ver 2007 A1セルに数字を入力し、B1セルに数に応じた背景色を反映させたいのですがどうすれば良いでしょうか 2003だと条件書式で3つまでは入力できたのですが、2007は条件追加ボタンが見当たらず・・・ 20001~青 15001~20000水色 10001~15000緑 5001~10000黄色 0~5000赤 315 :デフォルトの名無しさん:2011/03/29(火) 18 00 09.65 上記条件付書式のコピーについてもうひとつ質問です Z1に入力した数字次第(○○以上○○未満の場合)で、W1セル背景が5段階に変色するという書式をAND関数を使って設定しています 以降入力数字に対する変色は同条件で、Z2に入力したものをV1に反映、Z3に入力したものをU1に反映と、縦の入力データを横左方向に出力、といった書式を一括でコピーしたいのですが方法はあるでしょうか 現状W1をコピーすると、V1にもZ1からデータをひっぱってくる数式がコピーされてしまいます W1セルに対して Z1 5001 のとき背景赤色 AND(Z$1 =5001,Z$1 10001) のとき背景黄色といった感じで記入してます $の位置が悪いか不要ですかね 316 :デフォルトの名無しさん:2011/03/29(火) 18 03 45.25 VBAで設定するなら、$がどうとかはあまり関係ない つーか、ここはExcelスレではなくVBAスレなんだが おまえはそれが解って来ているのか? 317 :デフォルトの名無しさん:2011/03/29(火) 18 10 31.69 エクセル質問で検索するとここが出てきたんでそりゃ失礼! 319 :デフォルトの名無しさん:2011/03/29(火) 19 34 27.89 316 細かい事言うな 323 :デフォルトの名無しさん:2011/03/29(火) 20 37 03.65 319 本人納得して移動してるのに、他人が細かい事言うな 324 :303:2011/03/29(火) 21 30 38.26 307 309のように、カスタムコントロール(ラッパー?)で コントロール配列を実装するのがいちばん使いでがありそうな感じだね 構造体はWin32APIとかで必須だけど、VBScriptだと使えないから 泣く泣くクラスで実装してる人も多いんだろうか わざわざクラス使ってるVBS見たことないですわ 325 :309:2011/03/29(火) 21 45 28.88 俺はVBSでもクラス使いまくりだ 連想配列にぶち込むオブジェクトとしてクラス使う は、VBAでもVBSでも変わらないからな ぶち込む先がVBA.CollectionかScripting.Dictionaryかの違いで あとはVBAでは標準モジュール毎にPrivateメンバを持てるけど WSFでインクルードする場合は、ファイル毎にPrivateメンバを持てないので Privateメンバを持たせたい場合は必然的にクラス使うことになる 327 :デフォルトの名無しさん:2011/03/29(火) 23 07 16.51 325 VBSで入力補完が出来るエディタってある? 328 :デフォルトの名無しさん:2011/03/29(火) 23 11 26.42 いくつかあるけどVBSはスレ違い。 330 :デフォルトの名無しさん:2011/03/30(水) 09 33 22.55 プログラム未経験です。 仕事で必要なため、勉強したいが、 最初に読む書籍でオススメがあれば、 教えてください。 バージョンはExcel 2003です。 331 :デフォルトの名無しさん:2011/03/30(水) 09 51 56.85 330 先ずはこの3冊がおすすめ。2007でもいいかも。 かんたんプログラミング Excel2003 VBA 基礎編 かんたんプログラミング Excel2003 VBA 応用編 かんたんプログラミング Excel2003 VBA コントロール・関数編 332 :デフォルトの名無しさん:2011/03/30(水) 17 03 17.22 499 名前:デフォルトの名無しさん [sage] 投稿日:2009/03/30(月) 23 56 12 できる大辞典 Excel VBA がオススメ 大村あつしは知識はあるが根本的にバカなので こいつの書いた本は素人にはオススメしない バカな内容に引きずられないだけの基礎スキルを持っていて 知識だけ上乗せしたい中級者以降なら構わないが かんたんプログラミング Excel2003 VBAシリーズは大村あつし 333 :デフォルトの名無しさん:2011/03/30(水) 21 49 48.50 330 プログラム未経験なら ExcelVBAより、CやJavaから始めたほうが、 学びやすい ExcelVBAを1年間学ぶより、 Javaを11ヶ月学んで1ヶ月ExcelVBAを学ぶほうが はるかにプログラマとしての実力がつくだろう 334 :デフォルトの名無しさん:2011/03/30(水) 22 03 22.88 だからどうしたって 335 :デフォルトの名無しさん:2011/03/30(水) 22 05 42.34 330 ハードウェア(PCアーキテクチャ)に多少なりとも造詣があるならC それほどでも無ければJAVA Windowsしか解らんのであればC# 336 :デフォルトの名無しさん:2011/03/30(水) 22 28 37.87 仕事で必要なため ExcelVBAが仕事で必要という事ではないのか? 337 :デフォルトの名無しさん:2011/03/30(水) 22 44 23.32 ExcelVBAじゃなければならないケースなんてそんなないだろ 338 :デフォルトの名無しさん:2011/03/30(水) 22 57 10.13 プログラムが目的ならそんなにはないだろうけど Excelを使うのがメインならExcelVBA以外でどうする気だね? 339 :デフォルトの名無しさん:2011/03/30(水) 23 08 25.58 エクセルメインの会社なんて沢山あるだろ 340 :デフォルトの名無しさん:2011/03/30(水) 23 09 54.98 Excel自体がActiveXアプリなので、WSH等からの操作が可能 つまり、JScriptはもちろんのこと、Perl、Ruby、Pythonなどでも VBAと同等とは言えないが、かなりの操作が可能だよ まあ俺は別言語が使いたいわけじゃないから、外部から弄る場合もVBSだが 341 :デフォルトの名無しさん:2011/03/30(水) 23 17 09.38 俺もVBAから入ったからVBSだな 342 :デフォルトの名無しさん:2011/03/30(水) 23 18 09.83 エクセルで既に動いてる奴を修正するパターンでも 別ので作り直すの? 343 :デフォルトの名無しさん:2011/03/30(水) 23 23 22.79 作り直すのが目的じゃないんで、滅多にやらないが 既に開いてる奴を外部から操作することもあるよ まあExcelの操作できる言語はVBAのみじゃないってだけの話だし 344 :デフォルトの名無しさん:2011/03/30(水) 23 46 48.37 C#からExcelを弄ると苦痛 引数省略できねぇえぇぇ 345 :デフォルトの名無しさん:2011/03/31(木) 02 08 31.03 C#だって原則は省略できないだろ 346 :デフォルトの名無しさん:2011/03/31(木) 11 29 59.92 計算を手動にしてるんですが、VBAで再計算を行わせるように出来ないですか? Excel2003です。お願いします 347 :デフォルトの名無しさん:2011/03/31(木) 11 51 43.54 ヘルプ検索すればすぐ出てくるし 手動での再計算操作をマクロの記録にとっても解るし なんでこのレベルのことを自分で調べられないの? 348 :デフォルトの名無しさん:2011/03/31(木) 20 04 40.56 VBAのコードを書いていると、「コンパイルエラー メモリが足りません。」とのエラーが出るようになりました。 (実行時のエラーではなく、記述している最中のエラーです。) ヘルプを見ると「メモリが不足しています。(Error 7)」というエラーのようです。 ヘルプに記載されている対処は行ってみたものの、改善されませんでした。 どのようにすればこの問題は解決できるのでしょうか? Excel2007です。よろしくお願いします。 349 :デフォルトの名無しさん:2011/03/31(木) 20 23 08.73 ハードウェア環境を省略するような質問に答えてくれる親切な人がいるとは思えない 350 :348:2011/03/31(木) 20 31 16.72 349 すみません。ハードウェア環境は以下の通りです。 WinXPProSP3 CPU i7 2.80GHz メモリ 2.96 GB 仮想メモリのページングファイル 2046 - 4092 MB 他の人のPCで起動しようとしても同じエラーが出ました。 351 :デフォルトの名無しさん:2011/03/31(木) 21 12 32.06 コード書けよ。俺たちはエスパーじゃねーから 352 :348:2011/03/31(木) 21 18 50.73 351 すみません。業務で作成したコードのため、公開することができませんでした。 自己解決しました。 ttp //hpcgi1.nifty.com/MADIA/VBBBS2/wwwlng.cgi?print+200604/06040032.txt にあるように、新規でエクセルファイルを作成し、全コピーをすることで問題を解消することができました。 ただし、気になる点が1つだけあります。 全てのシート及びコードをコピーしたはずなのに、(数人で確認しました。) 新しいファイルが657KBに対し、エラーのあるファイルは17644KBでした。 これが原因だったのかもしれませんが、詳細は不明です。 353 :デフォルトの名無しさん:2011/03/31(木) 22 39 26.82 352 たぶん、どれかのシートの最下行(Excel2007なら数百万行だっけ)あたりになにかゴミデータでもあるんじゃないか? 354 :デフォルトの名無しさん:2011/04/01(金) 00 50 47.68 345 Excelのオブジェクトは省略パラメータだらけだって事だよ Excel.Workbook oWb = mExcelApp.Workbooks.Open( str_filename, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); こんな感じになる 355 :348:2011/04/01(金) 09 42 16.41 353 返信が遅くなりました。 Ctrl+A- Ctrl+C- Ctrl+P の繰り返しでコピーしたので ごみデータがあればそれも一緒にコピーされる気がしますが・・・。 ともあれ、問題は解決しました。 新規作成中のコードもうまく動くようになりました。 ご回答下さった皆様、ありがとうございました。 356 :デフォルトの名無しさん:2011/04/01(金) 09 48 14.24 ×Ctrl+P ◎Ctrl+V 361 :デフォルトの名無しさん:2011/04/01(金) 13 55 00.59 2010でマクロの挙動が変わってしまいました。 Auto_OpenでExcelの起動と同時にマクロを走らせているのですが、 2007では起動と同時にワークシートも表示されていたのが 2010ではマクロが終了するまでシートが表示されません なんとかなりませんか? 362 :デフォルトの名無しさん:2011/04/01(金) 15 19 27.73 360 アドインにすればいいと思うが。。 さうすれば他のPCでも使える。 363 :デフォルトの名無しさん:2011/04/01(金) 16 56 53.55 現在複数のエクセルファイルで、同一のコードを使用するために、 各エクセルファイルそれぞれのに同一のコードをコピペしたり、 エクセルファイル自体をコピーしてコードをそのまま持ってきて使用しています。 現状で、そのファイルが10個以上となっていますが、 vbaのコードに仕様を変更したり修正したりすると、それらのファイルのすべてそれぞれで 同様にコードを書きなおさないとなりません。 全選択のコピペで済む話ですが、かっこ良い仕様とは言えませんね。 なので、DLLみたいな感じで、コード自体は一つのファイルとして、 各エクセルファイルでそれを参照するようにすれば、もとのコードファイルを書き換えるだけで済むような仕様にしたいのですが、 そういう場合はどのようにすればよいのでしょうか? 364 :デフォルトの名無しさん:2011/04/01(金) 17 05 09.10 個人用マクロブック 365 :デフォルトの名無しさん:2011/04/01(金) 17 09 29.77 分かりにくい長文になってしまいましたが、 要するに、別ファイルに記述されているvbaコードを使えるかどうかです。 ちなみに BeforeDoubleClick等のイベントプロシージャも使用しています。 366 :デフォルトの名無しさん:2011/04/01(金) 17 17 20.93 だから個人用マクロブック もしかしたら個人用マクロブックでは出来ないとか勘違いしてるのかも知れないけど イベントも含めてちゃんと出来るから 367 :デフォルトの名無しさん:2011/04/01(金) 17 30 11.45 366 自己解決ですが、参照設定でコードが書かれたxlsファイルを直接指定しておけばグッドそうです。 ありがとうございました>< 366 個人用マクロブックだとそれらとは関係ないエクセルファイルを使用する時もいちいち読みこまれるのがカッコ悪いと思います。 368 :デフォルトの名無しさん:2011/04/01(金) 17 59 41.21 あぁ、この子勘違いしてるんだね 369 :デフォルトの名無しさん:2011/04/01(金) 20 43 03.14 かっこ悪いと思います! 人に聞くのは 370 :デフォルトの名無しさん:2011/04/01(金) 20 48 16.27 選択した図形にくっついてるコネクタの情報ってどうやったらわかる? →■ 上の状況で■を選択してマクロを実行、いろいろした最後に、→を繋ぎ直す処理をしたい。 くっついてる最初の時点で名前を取っといて、最後にendconnect selectionすればいいと思うだけど。 371 :デフォルトの名無しさん:2011/04/01(金) 21 57 43.94 363 かっこいい…しびれた…… 372 :デフォルトの名無しさん:2011/04/02(土) 14 15 20.95 370 自己解決しました。 374 :デフォルトの名無しさん:2011/04/02(土) 15 19 21.87 368 何か勘違いしていたでしょうか? もしかして、個人用マクロブックの中のマクロで、開いたファイル中で呼び出すことがないマクロに関しては読み込まれないんですか? 380 :デフォルトの名無しさん:2011/04/02(土) 23 16 00.88 オフィス田中の田中亨が出してるSE出版のリファレンスに最近ハマッている。 リファレンスという側面以外に学習教材としての側面も大いに持ち合わせていてかなり良い! 377 :デフォルトの名無しさん:2011/04/02(土) 22 40 38.13 クラスって今まで使ったことないけどあれってどういうときに使うの? 378 :デフォルトの名無しさん:2011/04/02(土) 22 44 44.35 簡単に言うと、クラスモジュールで作成したプログラムによって、標準モジュールなどで、独自のメソッドやプロパティが使えます。 379 :デフォルトの名無しさん:2011/04/02(土) 22 50 35.56 俺は昔、やりたいことがあって方法を調べてたら、クラスを使う手法に行き着いた 377もそうやって必然性に迫られるまでは、クラスなんか使わなくていいよ 381 :デフォルトの名無しさん:2011/04/03(日) 00 24 47.36 今のとこ、クラスじゃなきゃできないってことは VBA環境の右クリックに独自イベント処理を追加したとき、くらいかなぁ こんなかんじ Private WithEvents cmmndBrEvents1 As CommandBarEvents Private Sub cmmndBrEvents1_Click(ByVal CommandBarControl As Object, handled As Boolean, CancelDefault As Boolean) ・・・ End Sub ネタ元はこれね Excelプロフェッショナルエンジニアテクニック ttp //www.amazon.co.jp/dp/4904412028/ 387 :デフォルトの名無しさん:2011/04/03(日) 22 15 50.29 A1 B1 C1に値が入っていて、 D1が =SUM(A1 C1)となっていた場合に、 F1にD1の値のみコピーをしたいんだけど、 A1 B1 C1に数値を入力するたびに、 F1にD1の値のみコピーってできる? エクセル2007 VBAのコードを教えて。 特に、「A1 B1 C1に数値を入力するたびに」のコードの解説もよろ。 388 :デフォルトの名無しさん:2011/04/03(日) 22 25 34.32 387 ワークシートのChangeイベントで出来る この説明で解らないなら、基礎を勉強して出直せ ここは丸投げでコード書いて貰うスレではなく、要点だけ教えて貰えば、 あとは自分でコード書ける人がヒントを貰いに来るスレなので 389 :デフォルトの名無しさん:2011/04/03(日) 22 56 21.79 382と 387は釣りだよ この種のクソ虫が最近増えてきたな 390 :387:2011/04/03(日) 23 02 50.15 すまんくそ蒸しでw 本当に困っているvba初心者なんだ. サンプルコード教えてw 391 :デフォルトの名無しさん:2011/04/03(日) 23 14 18.17 390 sub サンプルコード() do if msgbox("あなたは糞虫ですか?", vbyesno) = vbyes Then msgbox "やはり糞虫だったんですねw" exit do end if loop end sub 392 :387:2011/04/03(日) 23 23 04.84 391 アフォかおまえ おれはくそ蒸しであって糞虫ちゃうちゅうねんw こいつじゃあ話にならん。 コードかける人かもーんw 393 :コードかける人:2011/04/03(日) 23 32 04.10 C G Am Em F C Dm/F G コード書いたよ 大逆循環な 394 :デフォルトの名無しさん:2011/04/03(日) 23 36 23.20 393 なんの曲だよw 395 :デフォルトの名無しさん:2011/04/03(日) 23 40 12.94 387 普通に数式で、F1セルに「=D1」とかじゃあダメなのか? 396 :デフォルトの名無しさん:2011/04/03(日) 23 43 12.39 394 大逆循環はコード(進行)最適化の一つの結論だぜ http //ja.wikipedia.org/wiki/%E3%82%AB%E3%83%8E%E3%83%B3_%28%E3%83%91%E3%83%83%E3%83%98%E3%83%AB%E3%83%99%E3%83%AB%29#.E5.A4.A7.E9.80.86.E5.BE.AA.E7.92.B0 397 :デフォルトの名無しさん:2011/04/04(月) 00 13 17.03 396 あーそういやそんなコード理論あったなぁ つーか進行的に普通すぎて名前なんか出てこないぞw 398 :デフォルトの名無しさん:2011/04/04(月) 01 08 21.43 387 ワークシートに変更があった場合 Private Sub Worksheet_Change(ByVal Target As Range) 変更された行が1行目なら If Target.Cells.Row = 1 Then 変更された列が1列目~3列目の間なら If 1 = Target.Cells.Column And Target.Cells.Column = 3 Then 1行目の6列目の値に1行目の4列目の値を代入 Cells(1, 6).Value = Cells(1, 4).Value End If End If End Sub 399 :387:2011/04/04(月) 02 00 59.90 398 ありがとうございます。 ここから、Copyメソッドや、PasteSpecialメソッドが続くと思うのですが、 よくわかりません。どうしてもエラーが出てしまいます。 400 :デフォルトの名無しさん:2011/04/04(月) 02 14 46.11 399 横レスだけど、 398は、標準モジュールじゃなくて ワークシートモジュールに書くんだよ CopyメソッドとかPastSpecialメソッドとか関係ないよ 401 :デフォルトの名無しさん:2011/04/04(月) 02 43 22.07 忠告しとこうか、質問スレで無意味な回答するくらいならスルーするんだな するくらいなら スルー する んだな! 402 :387:2011/04/04(月) 02 55 56.78 400 ワークシートモジュールに書いてます^^; A1 B1 C1に値が入っていて、 D1がA1+B1+C1場合に、 F1にD1の値のみコピー(形式を選択してコピー)をしたいんだけど、 A1 B1 C1に数値を入力するたびに、 F1にD1の値のみコピー(形式を選択してコピー)ってできるでしょうか? ワークシートに変更があった場合 Private Sub Worksheet_Change(ByVal Target As Range) 変更された行が1行目なら If Target.Cells.Row = 1 Then 変更された列が1列目~3列目の間なら If 1 = Target.Cells.Column And Target.Cells.Column = 3 Then Cells(1, 4).Value = Cells(1, 1).Value + Cells(1, 2).Value + Cells(1, 3).Value Cells(1, 4).Value.Copy Cells(1, 6).PasteSpecial Paste =xlPasteValues, Operation =xlNone, SkipBlanks _ =False, Transpose =False End If End If End Sub どこが誤りなのでしょうか? 403 :387:2011/04/04(月) 03 05 15.99 ×形式を選択してコピー ○形式を選択して貼り付け でした。すみません。 404 :デフォルトの名無しさん:2011/04/04(月) 06 23 27.58 402 CopyやPasteSpecialは関係ない 398のままでいい 387でD1セルに「=SUM(A1 C1)」となっている と書いてあるのを前提として 405 :デフォルトの名無しさん:2011/04/04(月) 19 04 57.44 だんだんと壮大なことになってきてるなw 答えてる方も釣りかw 406 :デフォルトの名無しさん:2011/04/04(月) 19 06 21.05 あー。わかった! 387のエクセルの自動計算がオフになってるだけじゃないのか? 407 :デフォルトの名無しさん:2011/04/04(月) 20 34 41.64 406 エクセルの自動計算がオフ 何のこと?どこにチェック項目がある? 408 :デフォルトの名無しさん:2011/04/04(月) 21 03 13.46 少しはググれ 409 :デフォルトの名無しさん:2011/04/04(月) 22 32 47.27 402 Cells(1, 4).Value = Cells(1, 1).Value + Cells(1, 2).Value + Cells(1, 3).Value が思いつくのに、 Cells(1, 6).Value = Cells(1, 4).Value が思いつかないのは不思議だ いっそ、プロシージャの中身、全部消して 上の2文だけにしたら? 410 :デフォルトの名無しさん:2011/04/04(月) 22 45 36.59 まあ、どこが間違ってるって話だから × Cells(1, 4).Value.Copy ○ Cells(1, 4).Copy 411 :387:2011/04/04(月) 23 44 22.94 410 ありがとうございます。自己解決してましたがw ところで、このプログラムを実行すると、 Cells(1, 4)がコピー元の選択状態になってうざいのですが、 PasteSpecialメソッドを実行した後、 この状態を解消するメソッドってあります? 412 :デフォルトの名無しさん:2011/04/04(月) 23 47 39.17 選択解除とかじゃなくて、なんで素直にみんなが言ってるように Cells(1, 6).Value = Cells(1, 4).Value ってやらんのだね? そこまでコピペにこだわる特別な理由でもあるのか? 413 :387:2011/04/04(月) 23 59 20.91 412 実際、仕事で使っているエクセルには 398さんのように、 Cells(1, 6).Value = Cells(1, 4).Valueの代入で、 プログラミングしております。皆様ありがとうございます。 コピペはもう必要ないのですが、 初め、CopyメソッドとPasteSpecialメソッドが必要と考えていたので、 この使い方もできれば習得したいと思いまして。。。 414 :デフォルトの名無しさん:2011/04/05(火) 00 30 23.15 411 Application.CutCopyMode = False 415 :387:2011/04/05(火) 00 36 20.38 414 おお、ありがとうございます。 ヘルプで調べればよいのですが、 VBEのヘルプがなぜか このページはご利用いただけません お探しのページはご利用いただけません。以下のことを試してみてください。 ツールバーの [更新] をクリックする ツールバーの [戻る] をクリックした後、目的のページへのリンクをもう一度クリックする コンピュータに保存されたオフラインのコンテンツを表示する となってしまい、調べられないのです。 ううう。なぜだ? 416 :387:2011/04/05(火) 00 43 38.46 VBAをいじる前に http //www.trickpalace.net/windows/tips/excel.open.window.htm により、エクセルを多重起動に設定したのが もしかしていけなかったのか? 417 :デフォルトの名無しさん:2011/04/05(火) 07 03 42.39 415 そうとう知能の低いクソ虫だな その画面から「オフラインのコンテンツ」で調べるんだよ あと2chで書き込む前に一度ググれ 例えば「vba ヘルプ オフライン」とか入力して検索してみろ お前の知能ではVBAは向いてないから以後は関わらないしろ 435 :デフォルトの名無しさん:2011/04/05(火) 15 38 17.73 最近、的外れな指摘して恥かくのが流行ってるのか? 426とか 428とか 433とか 436 :デフォルトの名無しさん:2011/04/05(火) 15 38 27.81 433 見やすさを考慮するとどういった 記述になるでしょうか? 437 :デフォルトの名無しさん:2011/04/05(火) 16 37 31.93 435 遅れてるなあ超流行ってるよ知らないの? 438 :デフォルトの名無しさん:2011/04/05(火) 16 43 22.49 納得した俺に、どこが恥ずかしい回答なのか教えてplz 439 :デフォルトの名無しさん:2011/04/05(火) 16 56 21.71 438 どれの恥ずかしさを晒して欲しいの? 恥ずかしい回答、いっぱいあるのでw 440 :デフォルトの名無しさん:2011/04/05(火) 17 13 06.27 さっきの3つをお願いします 446 :デフォルトの名無しさん:2011/04/05(火) 21 03 32.72 440 さっきの3つは何処が恥ずかしいか晒されてるだろ 449 :デフォルトの名無しさん:2011/04/05(火) 22 09 00.79 〉〉446 どこにだろう 451 :デフォルトの名無しさん:2011/04/05(火) 22 36 16.98 449 今大流行の的外れで恥ずかしい回答の実践見せてやってんだよそんくらい判れよ 466 :デフォルトの名無しさん:2011/04/07(木) 00 14 23.73 独学でやってるんで、一般的な意見が聞きたいです。 入力用ユーザーフォームの実際の処理は 標準モジュールに記述するものなんですか? それと、標準モジュールはいくつかつくって、 処理内容ごとにわけたりしますか¥? プロシージャが増えるほど視認性が悪くなってきたもので。 467 :デフォルトの名無しさん:2011/04/07(木) 00 40 06.57 466 プログラミングの作法は宗教みたいなもんで統一されてないし、 VBAにはとくにガイドラインもなかったと思う 468 :デフォルトの名無しさん:2011/04/07(木) 00 52 27.55 467 ピュアオーディオ宗教みたいな感じですか。 自分が見やすかったり、使いやすければ とくに問題なし、いったところのようですね。 僕は dim aaa , bbb , ccc as integer や aaa = 1 ccc = 3 bbb = 2 ddd = 4 とかまとめたくなってしまいます。 469 :デフォルトの名無しさん:2011/04/07(木) 00 53 04.14 468 コロンが抜けてました・・・ 470 :デフォルトの名無しさん:2011/04/07(木) 01 27 37.25 vbaでよくやる間違いに dim aaa , bbb , ccc as integer ってやっちゃうのがある 上でも言われてるけど、それでintegerになるのcccだけだから 471 :デフォルトの名無しさん:2011/04/07(木) 07 35 23.63 逆に、VB.NETだとその書き方で全部にIntegerが適用されるから ややこしいんだよな。 472 :デフォルトの名無しさん:2011/04/07(木) 08 13 38.60 別にややこしく無いじゃん 今後はともかく現状ではExcelVBAにVB6準拠のとVB.NET準拠のがあるわけではなく 全てVB6準拠で統一されているんだから 473 :デフォルトの名無しさん:2011/04/07(木) 23 04 05.17 xmlhttp で取得したhtmlを タグで解析するにはどうすればいい? 例えば10個目のtdタグ内容をinnertextで 抜きだすとか 474 :デフォルトの名無しさん:2011/04/07(木) 23 16 40.61 .NET移行を視野に入れた作法なら、フォームモジュールに画面処理を書いて、 ビジネスロジック部分はクラスにして管理って感じかねぇ モジュールに入れるのは汎用関数ぐらいにして VBAでもそういう意識を持てば、独学でも業務で通用するセンスを磨けるよ 475 :デフォルトの名無しさん:2011/04/07(木) 23 19 37.75 はやくVBAも.NETに統一してほしい .NET環境使わないのはもったいない 476 :デフォルトの名無しさん:2011/04/08(金) 00 24 35.68 VBAは利用者(プログラマー)の数が他の言語より圧倒的に多くてレベルも様々だから 言語仕様を大幅に変えようとすると大混乱が起こるだろうな 483 :デフォルトの名無しさん:2011/04/08(金) 22 42 30.45 何故おしえたがりは考え方ではなく、コードを提示したがるのか 484 :デフォルトの名無しさん:2011/04/08(金) 22 56 57.43 日本語文章で説明すると、日本語理解できないバカの場合に再質問責めで大変なことになるが コード出しておけば、コード読めないバカでもとりあえずコピペで動き、大人しく帰ってくれるから 485 :デフォルトの名無しさん:2011/04/08(金) 23 00 24.84 483 楽だからだろ 考え方はお前が教えてやれよ 486 :デフォルトの名無しさん:2011/04/09(土) 00 37 04.26 Excel VBAから、Accessを呼び出したあとお、クローズ処理の書き方を教えてください。 Sub Main() Dim Acc As Object New Access.Application On Error GoTo Err Set Acc = CreateObject("Access.Application") 何らかの処理 既存mdbがオープンされていたらクローズ If *****************Then ←★ここの条件が書けません。 Call Acc.CloseCurrentDatabase End If Accessアプリケーションのクローズ If TypeName(Acc) = "Application" Then Call Acc.Quit End If Accessオブジェクトの開放 If Not (Acc Is Nothing) Then Set Acc = Noting End If Final Exit Sub Err Debug.Print Err.Description MagBox (Err.Description) Resume Final End Sub 487 :デフォルトの名無しさん:2011/04/09(土) 00 52 15.12 486 激しくスレ違い 3★3,4 488 :デフォルトの名無しさん:2011/04/09(土) 00 59 53.95 アクセスオブジェクトをクリエイトして操作しているんだよ! 489 :デフォルトの名無しさん:2011/04/09(土) 01 26 44.86 まずは 3★3,4読め エクセルオブジェクトを操作するのがExcelVBAであって アクセスのそれはスレ違い 逆にアクセスのVBAでエクセルオブジェクトを読んで操作する話なら ここで質問して良し 490 :デフォルトの名無しさん:2011/04/09(土) 02 44 50.12 outlookもダメなのかい? 491 :デフォルトの名無しさん:2011/04/09(土) 03 49 17.00 うん 492 :デフォルトの名無しさん:2011/04/09(土) 10 46 41.61 483 お前は俺か?w 俺も常々そう思ってるが、この程度ならコードだけでもしょうがねーなぁ。 IsNumericよりVarType使ったほうがいいと思うが。 493 :デフォルトの名無しさん:2011/04/09(土) 11 13 40.96 VarTypeは数値に見える文字列で素人がはまる 右寄せにしてたら区別が付かない 494 :デフォルトの名無しさん:2011/04/09(土) 11 34 47.37 「数値だったら」なら普通はVarTypeだな。 IsNumericは「数値に変換できるものなら」だから"1D1"とかでもTrueになる。 495 :デフォルトの名無しさん:2011/04/09(土) 11 38 57.68 つーか教室での指導や部下の教育なら考え方や意味から教えるべきだが ここはそれらとは違う、何の利害関係にもない赤の他人同士だってことを忘れてないか? それ解っている上で 483を『行動として示す(補足説明を行う)』なら単なるお人好しだが 口先でちょっかい出すだけだと、単なるバカってことにしかならないねw 496 :デフォルトの名無しさん:2011/04/09(土) 11 47 07.19 VarTypeにもIsNumericにも落とし穴がある 不特定多数が使うことを想定して作るなら、どちらを使うにしても落とし穴への例外処理が必要 自分だけが使うなら、想定さてる値と落とし穴が被らない方を使えば良し どちらの場合でも、「普通は~」なんて一概に言う奴は考えが浅い 497 :デフォルトの名無しさん:2011/04/09(土) 11 58 33.65 適材適所、臨機応変ってことですね。 498 :デフォルトの名無しさん:2011/04/09(土) 12 00 11.86 素人は想定外のミスを色々やってくれちゃうからなあ 数字を全角で入れたり「1500*1.05」みたいに計算式を入れたり スペースいっぱい入れて消したつもりになってたり(表示されない部分にデータが残ってる) ゼロとオーを間違えたり3桁ごとのコンマを手打ちで入れたり あらゆるケースを想定してたらコードをどんだけ書いても足りないぜ 499 :デフォルトの名無しさん:2011/04/09(土) 12 01 42.76 481=483=484本人じゃねーの? わかってて書いてるっぽいし。 俺は説明するのに1行ごとにコメント書くやつ見ると頭どつきたくなるわ。 よいコードはコメントは最小限でもわかる。 500 :デフォルトの名無しさん:2011/04/09(土) 12 02 26.93 あらゆるケースを想定できない奴には商用ソフトなんて作れないぜ 501 :デフォルトの名無しさん:2011/04/09(土) 12 05 11.19 496の考えの深さを見てみたいもんだぜw 普段は抜けだらけのコード書いてるのは想像できる。 502 :デフォルトの名無しさん:2011/04/09(土) 12 08 26.18 500 それは言えてるが、こういう掲示板での回答じゃgdgd長いコードは書いちゃいかんよな。 503 :デフォルトの名無しさん:2011/04/09(土) 12 11 03.54 501 ←こういうのなんて言うんだっけ ほら、なんたら犬の遠吠えとかなんとか 504 :デフォルトの名無しさん:2011/04/09(土) 12 14 24.30 うん、お前は誰にも負けんよ。 よっ!大統領w 505 :デフォルトの名無しさん:2011/04/09(土) 12 19 12.34 強がっちゃって可愛いなぁ 506 :デフォルトの名無しさん:2011/04/09(土) 12 23 09.02 505 あんまり相手にするな。 507 :デフォルトの名無しさん:2011/04/09(土) 12 31 39.00 あー、一人4役は疲れる 508 :デフォルトの名無しさん:2011/04/09(土) 12 44 18.81 そういえば某所に「普通」に敏感な素人がいたなぁ。 509 :デフォルトの名無しさん:2011/04/09(土) 12 52 45.15 あー、一人507役は疲れる 1から 507までは俺1人で書いたw 510 :デフォルトの名無しさん:2011/04/09(土) 13 48 32.52 498 そういうのはデータチェック用のモジュールを1個作っといて使い回せばいいんだよ 何かあったらどんどん追記してけばいい 怪しいデータや判定不能な物を発見したらメッセージ表示するだけの簡単なやつを 511 :デフォルトの名無しさん:2011/04/09(土) 16 19 41.68 486 ldb有る無しで判定