忍者ブログ
ブログ主が仕事や個人的に学んだPC系・プログラミング系(VBAとかHTML)について書いていく備忘録ブログ。 ※ここで記載する内容はあくまで「個人的に」上手くいく内容です。ご使用には十分注意してください
[22] [9] [8] [7] [6] [5] [4] [3] [1
Posted by 若槻風亜 - 2013.07.16,Tue
(対象)Excel VBA
(確認)Excel2003


今回はExcel VBAの小技集を並べてみましょう。
内容によっては2007以降は使えないのでご注意ください。
--------------------------------
1.テキスト型のデータを日付型に変換
  = Format(CDate(Format(テキスト型日付, "0000/00/00")), "m/d")


 (使用例)
   Sub Test001()
              Dim MyStr As String
             MyStr = "20130716"
             MyStr = Format(CDate(Format(MyStr, "0000/00/00")), "m/d")
            Debug.Print MyStr
      End Sub


 (解説)
   ★Format(MyStr, "0000/00/00")
    = MyStrの中身を/区切りの形に変更
   ★CDate(***)
    = ***の部分を日付に変更する(この場合は「2013/07/16」)
   ------------------------------------------------------------
   <ここから下はなくても使える>
   ★Format(***, "m/d")
    = ***の部分を「m/d」の形に変える(この場合は「7/16」)
----------------------------------
2.チェックボックス追加
  = CheckBoxes.Add(Top, Left, Width, Height)
    ・・・Top   : チェックボックスの上位置
    ・・・Left  : チェックボックスの左位置
    ・・・Width  : チェックボックスの幅
    ・・・Height : チェックボックスの高さ
 (使用例)
   '===========================================================
   ' チェックボックスを10個作る
   '===========================================================
   Sub CheckAdd()
    Dim I As Long
     For I = 1 To 10
      '■適当なサイズと位置でチェックボックスを作成し、選択
       ActiveSheet.CheckBoxes.Add(45, 145, 24, 16.5).Select
       '■チェックボックスの設定
       With Selection
         .Caption = ""            '表示文字
         .Name = "Check" & I      'コントロールの名前
         .Value = xlOn            'チェックの有無(On = True、Off = False)
         .LinkedCell = "$A$" & I  'リンクするセル
         .Top = ActiveSheet.Range("A" & I).Top    '上位置
         .Left = ActiveSheet.Range("A" & I).Left  '左位置
       End With
     Next
   End Sub
 (その他)
   Top~Heightの値はRangeから取る事も可能。
   <例>
    .CheckBoxes.Add(Top:=Range("A10").Top, _
                                 Left:=Range("A10").Left, _
                                 Width:=Range("A10").Width, _
                                 Height:=Range("A10").Height)
----------------------------------
3.カレントフォルダを変更する1
  = CreateObject("WScript.Shell").CurrentDirectory = "***"
    ・・・*** : フォルダパス。「\\ABC\AAA\BBB\」や「C:\」など
 (使用例)
   '===========================================================
   ' カレントフォルダを変更してファイルを開く1
   '===========================================================
   Sub MoveCurrentFolder()
     Dim MyFile As String
     '■指定フォルダにカレントフォルダを移動
     CreateObject("WScript.Shell").CurrentDirectory = "C:\"
     '■ファイルを開くダイアログを表示し、選択結果を変数に格納
     MyFile = Application.GetOpenFilename( _
            FileFilter:="Excel ファイル (*.xls; *.xlsx),*.xls; *.xlsx")
     '■結果を表示
        MsgBox MyFile
   End Sub
 (その他)
   主にネットワークドライブに移動する際に使える手段。
   ローカルドライブなら「ChDir」を使った方が簡単だと思われる。
   変更したドライブはExcelを終了した時点でリセットされるので
   次に開いた時にはいつも通りのカレントドライブが開く。
----------------------------------
4.カレントフォルダを変更する2
  = Declare Function SetCurrentDirectory Lib "kernel32" Alias _
                 "SetCurrentDirectoryA" (ByVal CurrentDir As String) As Long
    ・・・Sub-End Subより外で宣言。SetCurrentDirectoryの宣言文
       参照URL
    ----------------------------------------------------------------------
    SetCurrentDirectory ThisWorkbook.Path
    ・・・SetCurrentDirectoryの実行文
 (使用例)
   '===========================================================
   ' カレントフォルダを変更してファイルを開く2
   '===========================================================
   Sub MoveCurrentFolder2()
     Dim MyFile As String
     '■指定フォルダにカレントフォルダを移動
     SetCurrentDirectory ThisWorkbook.Path
     '■ファイルを開くダイアログを表示し、選択結果を変数に格納
     MyFile = Application.GetOpenFilename( _
            FileFilter:="Excel ファイル (*.xls; *.xlsx),*.xls; *.xlsx")
     '■結果を表示
     MsgBox MyFile
   End Sub


 (その他)
   言いたいことは1番と同じなので省略



----------------------------------
1番は使いどころが限定されますが、2番はたくさん作りたい時に便利ですし、
3番4番はユーザーにファイルを選択させたい時等々に便利だと思います。
少々説明を投げている部分もありますので、もっと詳しく知りたい! という場合は
グーグル先生に尋ねてみてくださいな。
有名な内容ばかりですので、分かりやすい説明を乗せているサイトさんに
めぐり合えると思います。

拍手[0回]

PR
Comments
Post a Comment
Name :
Title :
E-mail :
URL :
Comments :
Pass :   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
プロフィール
HN:
若槻風亜
性別:
女性
職業:
会社員
趣味:
創作、プログラミング
自己紹介:
仕事や個人で学んだことをまとめておきたかったがために備忘録ブログを立ち上げました。
あくまで自分が学んだこと・自分が出来たことなので、ご覧くださる場合は参照レベルでお願いします。
ブログ内検索
カレンダー
11 2017/12 01
S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
P R
最新トラックバック
コガネモチ
フリーエリア



Template by mavericyard*
Powered by "Samurai Factory"
忍者ブログ [PR]