ラベル VBA の投稿を表示しています。 すべての投稿を表示
ラベル VBA の投稿を表示しています。 すべての投稿を表示

2011年9月22日木曜日

Excel VBAプログラミング一覧

※参考度は個人的は評価です。(助かった度かも?)


Excelシート上に配置したコントロールを使用する方法
参考度:★★☆☆☆

VBAでダブルクォーテーションを扱う方法
参考度:★★☆☆☆

VBAでシートを追加する方法
参考度:★★☆☆☆

VBAで指定のシートを削除する方法
参考度:★★☆☆☆

VBAで対象のシートが存在するかチェックする方法
参考度:★★☆☆☆

VBAでメッセージボックス(MsgBox)を表示させる方法
参考度:★☆☆☆☆

VBAでコメントのサイズを変更する方法
参考度:★★★☆☆

VBAでコメントを記入する方法
参考度:★★★★☆

VBAでスペースを削除する方法
参考度:★☆☆☆☆

VBAで数値を文字列に変換する方法
参考度:★☆☆☆☆

VBAで文字列を数値に変換する方法
参考度:★☆☆☆☆

VBAで大文字/小文字の変換を行う方法
参考度:★★☆☆☆

VBAで指定の文字数を切出す(抽出)する方法
参考度:★☆☆☆☆

VBAで文字数を調べる方法
参考度:★☆☆☆☆

VBAで数式を設定する方法
参考度:★★★☆☆

VBAを使用した文字列の変換 全角、半角等
参考度:★★☆☆☆

VBAで開いているファイルを閉じる方法 ※確認メッセージも出さない
参考度:★★★☆☆

VBAを使用して対象のファイルをアクティブにする方法 シート選択も
参考度:★☆☆☆☆

VBAを使用してEXCELのシート上のデータをすべて削除する方法
参考度:★★☆☆☆

VBAを使用して対象のファイルを開く方法
参考度:★★☆☆☆

VBAを使用したEXCEL描画機能の一旦停止
参考度:★★☆☆☆

マクロを実行しているファイル名の取得
参考度:★★☆☆☆

-------------------------------------------------------------------
EXCEL VBA xls Excel2003

2011年9月17日土曜日

Excelシート上に配置したコントロールを使用する方法

Worksheetオブジェクト.OLEObjects(コントロール).Object.プロパティやメソッド
・コントロール
 操作するコントロールを名前や番号で指定します。なお、番号で指定するときの先頭は1です。
・プロパティやメソッド
 ValueやEnabledなど、コントロールを操作するときのプロパティやメソッドを指定します。

--------------------------------------------------------------------------------
【記述例】「TextBox1」というテキストボックスへ値をセットする
Worksheets("Sheet1").OLEObjects("TextBox1").Object.Value = "テスト"

【記述例2】「ComboBox1」というコンボボックスへアイテムを追加する
Worksheets("Sheet1").OLEObjects("ComboBox1").Object.AddItem "リスト1"


-------------------------------------------------------------------
EXCEL VBA xls Excel2003

2011年9月16日金曜日

VBAでダブルクォーテーションを扱う方法

VBAでダブルクォーテーションを扱う場合は
""" のようにダブルクォーテーションを三つ重ねます。

-------------------------------------------------------------

Sheets(シート名).Cells(1, 1).Value = """ & "使用方法" & """
"使用方法" と表示されます。

-------------------------------------------------------------

EXCEL VBA xls Excel2003

VBAでシートを追加する方法

新しくシートを追加します。
引数の指定により、追加する場所、枚数、追加するシートの種類を指定することが可能です。

構文 Object.Add(Before, After, Count, Type)

設定項目 内容
Object Worksheetsオブジェクトコレクション,
Sheetsオブジェクトコレクション,
Chartsコレクションオブジェクト
Before 指定したシートの直前に新しいシートを追加 [省略可能]
After 指定したシートの直後に新しいシートを追加 [省略可能]
Count 追加するシートの枚数を指定。既定値は1 [省略可能]
Type 追加するシートの種類(上記表参照) [省略可能]


次のサンプルはアクティブブックの一番最後に、シート名を指定して新規ワークシートを追加します。

----------------------------------------------------------------
Sub Sheet_add()
'操作シートの後ろに挿入します。
Worksheets.Add(after:=Worksheets("操作")).Name = "シート名入力"
End Sub
-----------------------------------------------------------------

EXCEL VBA xls Excel2003

VBAで指定のシートを削除する方法

VBAでシートを削除する方法です。

Worksheets("シート名を入力").Deleteで削除します。
ただし、存在しないシートを指定した場合はエラーになるので、
削除する前にシートが存在するかチェックする必要があります。

シートが存在するかのチェックはこちらから↓
VBAで対象のシートが存在するかチェックする方法

--------------------------------------------------------------
Sub Sheet_delete(sheetname As String)
'対象のシートが存在するかチェックを行う
'存在する場合は削除を実行
If Sheet_存在Check(sheetname) = True Then
Application.DisplayAlerts = False '確認メッセージを表示しない
Worksheets(sheetname).Delete
Application.DisplayAlerts = True '確認メッセージを表示する。
End If

End Sub
----------------------------------------------------------------

EXCEL VBA xls Excel2003

VBAで対象のシートが存在するかチェックする方法

VBA でマクロを組んで定型的なことを自動化する場合に、目的のシートやブックが
存在するかどうかのチェックは必ず必要になると思います。

そのシートがあるのに新規作成すると、エラーで終了します、
無い場合は作成するためにも存在のチェックが必要になります。

ここで紹介する Function は、アクティブになっているワークブックに、
引数 SheetName のシートが実際にあるかチェックします。

あれば True なければ False を返します。
Sheets.Count でワークブックにシートが何枚あるかわかります。

Sheets(i).Name でシートの名前を順番に取得できます。

For ループで1枚ずつ、シートの名前が SheetName と等しいかチェックして います。


-------------------------------------------------------------------
'SheetName のシートが実際にあるかチェックする
Function Sheet_存在Check(sheetname As String) As Boolean
Dim i As Integer

Sheet_存在Check = False

For i = 1 To Sheets.Count
If Sheets(i).Name = sheetname Then
Sheet_存在Check = True
Exit For
End If
Next

End Function

----------------------------------------------------------

EXCEL VBA xls Excel2003

VBAでメッセージボックス(MsgBox)を表示させる方法

MsgBox関数を使ってメッセージを表示する方法です

基本の書式は下記の通りです。
MsgBox (表示文字列 ,[ボタン書式] ,[タイトル])
 
表示文字列:表示したい文字列を入力(省略不可)。複数行を設定するときは,
        改行する位置に,,VbCrLfを挿入します。
ボタン書式:表示するボタンの種類,使用するアイコンのスタイル,標準ボタン等の値
        の合計値です。省略時は[OK]ボタンのみ表示。
タイトル :メッセージボックスのタイトルバーに表示する文字列です。
       省略時はアプリケーション名が表示されます。

■アイコン
定数         内容
vbCritical      警告メッセージアイコン
vbQuestion      問い合わせメッセージアイコン
vbExclamation    注意メッセージアイコン
vbinformation    情報メッセージアイコン


■ボタン
定数           内容
vbOKonly         [OK]ボタンのみ表示
vbOKCancel       [OK] [キャンセル] ボタン表示
vbAbortRetryignore  [中止] [再試行] [無視] ボタン表示
vbYesNoCancel     [はい] [いいえ] [キャンセル] ボタン表示
vbYesNo         [はい] [いいえ] ボタン表示
vbRetryCancel     [再試行 ] [キャンセル ] ボタン表示


■標準ボタン
定数         内容
vbDefaultButton1  第1ボタンを標準ボタンにする
vbDefaultButton2  第2ボタンを標準ボタンにする
vbDefaultButton3  第3ボタンを標準ボタンにする


-----------------------------------------------------------------------
【サンプルコード】 
  MsgBox "警告メッセージを表示します。", vbCritical, "警告"

  MsgBox "無視ボタンを標準ボタンに設定しました。" _
          & VbCrLf& "ここで改行して表示します。" _
         , vbAbortRetryIgnore + vbInformation + _
         vbDefaultButton3, "標準ボタンの設定例"
-----------------------------------------------------------------------

MsgBox関数の戻り値を利用して条件分岐

MsgBox関数の戻り値を利用して条件分岐できます。表示されたダイアログボックス上で選択されたボタンの種類を,戻り値を使って,次に実行する処理を分岐します。
■戻り値
定数       内容
vbOK          [OK]ボタン
vbCancel        [キャンセル] ボタン
vbAbort         [中止] ボタン
vbRetry        [再試行] ボタン
vbignore        [無視] ボタン
vbYes         [はい] ボタン
vbNo          [いいえ] ボタン


------------------------------------------------------------------------
【サンプルコード】
   If vbYes = MsgBox("はいボタンを押してください。", vbYesNo, "終了確認") Then
      MsgBox "OK"
   Else
      MsgBox "押し間違えましたね。"
  End If
------------------------------------------------------------------------

サンプルを作成していますので、下記よりご自由にダウンロードして下さい。


------------------------------------------------------------------------

EXCEL VBA xls Excel2003

VBAでコメントのサイズを変更する方法

コメントのサイズを変更したい場合は↓下記の通り追加します。
'コメントのサイズ変更
Sheets("シート名").Cells(row,col).Comment.Shape.Width = 130
Sheets("シート名").Cells(row,col).Comment.Shape.Height = 30

↓下記のようにするとコメントのテキストサイズにあわせて自動でサイズ調整します。
・・・たぶんですが、試してないので分かりません。
'自動調整
Sheets("シート名").Cells(row,col).Comment.Shape.TextFrame.AutoSize = True

※コメントを記入する方法はこちらから

--------------------------------------------------------------------
EXCEL VBA xls Excel2003

VBAでスペースを削除する方法

LTrim(文字列)

RTrim(文字列)

Trim(文字列)


LTrim関数,RTrim関数,Trim関数を利用して文字列の中からスペースを取り除くことができます。
引数に設定した文字式から,全角,半角にかかわらず,
LTrim関数は先頭のスペースを,
RTrim関数は末尾のスペースを,
Trim関数は先頭と末尾のスペースをを取り除きます。

------------------------------------------------------------------------
Sub スペース削除()
  Dim astr as String

  astr = "   FC2ブログ     "
  MsgBox "@" + astr + "@"         ' 「@   FC2ブログ     @」と表示
  MsgBox "@" + LTrim(astr) + "@"    ' 「@FC2ブログ     @」と表示
  MsgBox "@" + RTrim(astr) + "@"    ' 「@   FC2ブログ@」と表示
  MsgBox "@" + Trim(astr) + "@"     ' 「@FC2ブログ@」と表示

End Sub
------------------------------------------------------------------------

EXCEL VBA xls Excel2003

VBAで数値を文字列に変換する方法

Str(数値)

----------------------------------------------------------------------
Sub VAL関数()
    Dim A As Integer
    Dim B As Integer

    A = 123
    B = 12
    MsgBox A + B        '135が表示されます
    MsgBox str(A) + str(B)  '12312が表示されます。(文字列の連結)
End Sub
----------------------------------------------------------------------

EXCEL VBA xls Excel2003

VBAで文字列を数値に変換する方法

Val(文字列)

Val関数は数字(String型)を適当な数値型のデータに変換します。
※ただし、数値に変換できない文字を読み込んだ時点で変換を中止します。

---------------------------------------------------------------
Sub VAL関数()
    Dim A As String
    Dim B As String

    A = "123"
    B = "15"
    MsgBox Val(A) + Val(B)   ’138(123+15)が表示されます。
    MsgBox A + B        '12315が表示されます。 
  End Sub    
----------------------------------------------------------------   

EXCEL VBA xls Excel2003

VBAで大文字/小文字の変換を行う方法

Ucase(文字列)

Lcase(文字列)

Ucase関数はアルファベットの小文字大文字に,
Lcase関数はアルファベットの大文字小文字に変換します。

------------------------------------------------------------------------
Sub Ucase_Lcase()
    Dim astr As String
    astr = "FC2ブログ-Mocho"

    MsgBox UCase(astr)  ’「FC2ブログ-MOCHO」と表示されます
    MsgBox LCase(astr)  ’「fc2ブログ-mocho」と表示されます
  End Sub   
------------------------------------------------------------------------

EXCEL VBA xls Excel2003

2011年9月14日水曜日

VBAで指定の文字数を切出す(抽出)する方法

Mid(文字列,抽出開始位置,抽出文字数)

Right(文字列,抽出文字数)

Left(文字列,抽出文字数)

Mid関数は指定開始位置から指定文字数までを抽出
Right関数は右から指定文字数までを抽出
Left関数は左から指定文字数までを抽出

--------------------------------------------------------------
Sub strTyuusyutu()
    Dim astr As String
    astr = "FC2ブログ-Mocho"

    MsgBox Mid(astr, 3, 3) '「ブログ」と表示されます    
    MsgBox Right(astr, 5)  '「Mocho」と表示されます 
    MsgBox Left(astr, 3) '「FC2」と表示されます
End Sub
--------------------------------------------------------------

EXCEL VBA xls Excel2003

VBAで文字数を調べる方法

Len(文字列式) 
Len関数は指定した文字列式に含まれる文字数を返します。


------------------------------------------------------------------
Sub example_len()
   Dim astr As String

   astr = "FC2ブログ"
   MsgBox "文字数: " & Len(astr)  ’「6」が表示されます 
End Sub

-------------------------------------------------------------------

EXCEL VBA xls Excel2003

VBAで数式を設定する方法

プログラムからセルに数式を設定して、Excelの機能を使って合計を求めたりすることがでるます。
もちろん、Formulaプロパティに文字列として数式を設定しているだけなので、
合計だけでなくさまざまな数式を入力することができます。
Range("A6").Formula = "=SUM(A1:A5)"

さらにCellアドレスも併用すると、ループ処理などで利用できるようになります。
AddressプロパティはExcelではおなじみの"A1"とか"B3"等の文字列を返します。

Cells(6, 3).Formula = "=SUM(" & Cells(1, 3).Address(False, False) & ":" & Cells(5, 3).Address(False, False) & ")"

-------------------------------------------------------------------------

EXCEL VBA xls Excel2003

VBAを使用した文字列の変換 全角、半角等

【書式】 StrConv文字列式変換形式

文字列式:変換する文字列です。
変換形式:実行する変換の種類の合計値として設定。

定数           内容
vbUpperCase    大文字に変換
vbLowerCase    小文字に変換
vbProperCase    各単語の先頭の文字を大文字に変換
vbWide       半角文字を全角文字に変換
vbNarrow       全角文字を半角文字に変換
vbKatakana     ひらがなをカタカナに変換
vbHiragana     カタカナをひらがなに変換
vbUnicode      システム既定のコードページを使って文字列をUnicodeに変換
vbFromUnicode   文字列をUnicodeからシステム既定のコードページに変換



EXCEL VBA xls Excel2003

VBAで開いているファイルを閉じる方法 ※確認メッセージも出さない

ファイルを閉じる方法
SAVEするかどうかのメッセージボックスを表示
Workbooks(OpenFilename).Close

SAVEせずに閉じる
Workbooks(OpenFilename).Close savechanges:=False

SAVEして閉じる
Workbooks(OpenFilename).Close savechanges:=True
※緑色も文字は対象のファイル名に置き換えてください。

※クリップボードにデータが残っている場合は、
  別で貼付けに使うかと聞いてくるメッセージボックスが表示されてしまう場合があるので
Application.DisplayAlerts = False
でメッセージを出さないようにする。もちろんTrueにすると確認メッセージを表示

-----------------------------------------------------------------
Dim OpenFilename As Strig

Sub File_Close()
OpenFilename = "BBB.xls"

'開いたファイルを閉じる
Application.DisplayAlerts = False '確認メッセージを出さない

Workbooks(OpenFilename).Close savechanges:=False '保存せずに閉じる

Application.DisplayAlerts = True '確認メッセージを出す

End Sub
-----------------------------------------------------------------

EXCEL VBA xls Excel2003

VBAを使用して対象のファイルをアクティブにする方法 シート選択も

Windows(ThisFilename).Activate
※赤文字にアクティブにしたいファイル名を入力

Sheets("データ").Select
※対象のシートを選択

--------------------------------------------------------------------------
Dim ThisFilename As String

Sub Data_File_Select()
ThisFilename = "AAA.xls"

Windows(ThisFilename).Activate
Sheets("データ").Select

End Sub
--------------------------------------------------------------------------

EXCEL VBA xls Excel2003

VBAを使用してEXCELのシート上のデータをすべて削除する方法

オートフィルタが入っている場合、すべて削除できない場合があるので、
オートフィルタを削除してから、実際の削除を実行する。

オートフィルタを使用しているかの調査
Worksheets("データ").AutoFilterMode = True
※Trueならオートフィルタを使用、Falseなら未使用

後は下記を参照


-------------------------------------------------------------------------
Dim ThisFilename As String

Sub Data_copy()
ThisFilename = "AAA.xls"

'対象のファイルをアクティブにする
Windows(ThisFilename).Activate
'対象のシートを選択する
Sheets("データ").Select

'オートフィルターが入っているかのチェック
If Worksheets("データ").AutoFilterMode = True Then
Selection.AutoFilter 'オートフィルターが入っている場合は削除
End If

'すべてのセルを選択
Cells.Select
'クリアする
Selection.ClearContents

End Sub
-----------------------------------------------------------------------

EXCEL VBA xls Excel2003

VBAを使用して対象のファイルを開く方法

ファイル検索ウィザードを開いて対象ファイルを選択して開く方法

ウィザードを開く
Application.GetOpenFilename("EXCELファイル (*.xls),*.xls")
※赤字で対象ファイルの指定

Filename$だとフルパスで名前を取得 ※ C:\フォルダ\AAA.xls
Dir(Filename$)だとファイル名のみ   ※AAA.xls


------------------------------------------------------------------
Dim OpenFilename As String

Sub Book_open()

'ウィザードを開いて対象ファイルを検索
Filename$ = Application.GetOpenFilename("EXCELファイル (*.xls),*.xls")
' OpenFilename = Filename$ 'フルパス付き
OpenFilename = Dir(Filename$) 'ファイル名のみ

'ファイルを開く
Workbooks.Open OpenFilename

End Sub
-------------------------------------------------------------------

EXCEL VBA xls Excel2003