エクセルワンポイントテクニック集(その1)
                                                      玄関へお回り下さい。
 まず、VBからExcel及びWordを操作する時の注意事項を見て下さい       (021)
  動作確認 : WindowsXP(SP2) VB6.0(SP6) / Excel 2000 Excel 2002 Excel 2007

 1.並べ替え (1)

 2.エクセルのコメント文を操作する (7)
   1.コメントを追加する 2.コメントを記入又は変更する 3.コメントを表示する 4.コメントを作成して表示する
   5セル範囲を指定してコメントを削除する 6列を指定してコメントを削除する 7全てのコメントを削除する
 3.エクセルで検索を行う (3)
   1.検索検索して見つかったセルをアクティブにする 2.検索して見つかったセルの行番号を取得する
   3.検索して見つかったセルの列番号を取得する
 4.文字列の表示(位置・方向等)操作色々 (17)
   1中央揃え 2選択範囲内で中央揃え 3.セルを結合(マージ)する 4.均等割付け
   5行の高さを取得 6行の高さを設定 7縦位置中央揃え 8表示角度45度に 9縦方向に表示
   10列幅で折り返し 11列幅に縮小 12数値・日付・時刻等の表示形式を設定する 13桁区切り
   14範囲を指定してセルの内容をクリア 15範囲を指定して書式をクリア 16行の高さを標準に戻す
   17列幅を標準に戻す
 5.入力済みセル領域を調べる (2)
   1Activateなセル("D5")があるActivateセル領域を選択 2xlSheet 上の使用済みのセル範囲を取得
 6.改ページを設定・削除する (7)
   1水平方向に改ページを挿入 2垂直方向に改ページを挿入 3改ページ設定をすべて削除  
   4印刷するセル範囲を設定 5改ページプレビューを表示 6改ページプレビューを閉る 7印刷範囲を解除
 7.エクセルのマクロ(プロシージャ)を呼び出す (3)
   1標準モジュール内に記入されているマクロを実行 2Sheet1等に記入されているマクロを実行
   3エクセルのシートに貼り付けてあるコマンドボタンを実行(クリック)
 8.セルに色を設定 (2)
   1.セルに色(内部色)を設定する 2.セルに色(内部色)を標準にする
 9.マクロの警告のメッセージを表示させない。 (1)

 10.保存確認のメッセージを表示させない。 (1)

合計 44 Tips

ご注意!
Excel の起動処理及び終了処理等は、既存のエクセルファイルを開く 等をご覧下さい。

ここにUPしているサンプル以外で解らない場合、まず,Excel上でマクロを取って見て下さい。
そのマクロを参考にコードを書いて見ると結構それで解決する場合があります。
それでも問題が解決されない場合や解らない場合は、掲示板の方に質問して見て下さい。
並べ替え(ソート)
  '範囲"A1:F6"をB列を基準に降順に並べ替えます
  xlSheet.Range("A1:F6").Sort Key1:=xlSheet.Range("B2"), _
   Order1:=xlDescending, Header:=xlYes, OrderCustom:=1, _
   MatchCase:=False, Orientation:=xlTopToBottom, _
   SortMethod:=xlPinYin
  '簡略したいなら下記でも同じです。
  'xlSheet.Range("A2:F6").Sort Key1:=xlSheet.Range("B2"), _
        Order1:=xlDescending

コメント表示・変更・削除方法色々
  'セル A3 にコメントを追加します。
  xlSheet.Range("A3").AddComment "セル A1 と A2 の合計です"
'----------------------------------------------
  'セル E3 にコメントを記入又は変更します。
  xlSheet.Range("E3").NoteText "変更予定" '転載禁止
'----------------------------------------------
  '最初のコメントを表示します。
  xlSheet.Comments(1).Visible = True '転載禁止
'----------------------------------------------
  'すべてのコメントを表示します。
  Dim cmn As Object
  For Each cmn In xlSheet.Comments
    cmn.Visible = True '転載禁止
  Next
'----------------------------------------------
  'コメント記入時に表示設定も行います。
  With xlSheet.Range("A9").AddComment '転載禁止
    .Visible = True
    .Text "合計= " & xlSheet.Cells(3, 1)
  End With
'----------------------------------------------
  'セル範囲を指定してコメントを削除
  xlSheet.Range("A1:A9").ClearComments '転載禁止
'----------------------------------------------
  '列を指定してコメントを削除
  xlSheet.Columns("A").ClearNotes '転載禁止
'----------------------------------------------
  '記入しているコメントを削除
  Dim cmn1 As Object
  For Each cmn1 In xlSheet.Comments '転載禁止
   cmn1.Delete
  Next

検 索
  '[小泉]を検索検索して見つかったセルをアクティブにする
  xlSheet.Cells.Find("小泉").Activate '転載禁止

  '上記と同じく最初に見つかったセルの行番号と列番号を取得する。
  xlSheet.Cells(11, 2).Value = _
     "
行番号=" & xlSheet.Cells.Find("小泉").Row & _
   "  列番号=" & xlSheet.Cells.Find("小泉").Column & " 見つかりました"

文字列の表示(位置・方向等)操作色々
  '中央揃え
  xlSheet.Cells(1, 1).Value = "中央揃え"
  xlSheet.Range("A1").HorizontalAlignment = xlHAlignCenter
'----------------------------------------------
  '選択範囲内で中央
  xlSheet.Cells(2, 1).Value = "選択範囲内で中央揃え"
  xlSheet.Range("A2:C2").HorizontalAlignment = _
     xlHAlignCenterAcrossSelection '転載禁止
'----------------------------------------------
  'セルを結合(マージ)する
  xlSheet.Range("A3:B3").MergeCells = True '転載禁止
'----------------------------------------------
  '均等割付け
  xlSheet.Cells(3, 1).Value = "均等割付け"
  xlSheet.Range("A3").HorizontalAlignment = xlHAlignDistributed
'----------------------------------------------
  '行の高さを取得する
  Dim Height As Integer
  Height = xlSheet.Range("A4").RowHeight '転載禁止
  Debug.Print Height
'----------------------------------------------
  '行の高さを設定する
  xlSheet.Range("A4").RowHeight = 30 '転載禁止
'----------------------------------------------
  '縦位置中央揃え
  xlSheet.Cells(4, 1).Value = "縦位置中央揃え"
  xlSheet.Range("A4").VerticalAlignment = xlVAlignCenter
'----------------------------------------------
  '表示角度45度に
  xlSheet.Cells(5, 1).Value = "45度で表示"
  xlSheet.Range("A5").Orientation = 45 '転載禁止
'----------------------------------------------
  '縦方向に表示
  xlSheet.Cells(6, 1).Value = "縦方向に表示"
  xlSheet.Range("A6").Orientation = xlVertical '転載禁止
'----------------------------------------------
  '列幅で折り返し
  xlSheet.Cells(7, 1).Value = "列幅で 折り返し"
  xlSheet.Range("A7").WrapText = True '転載禁止
'----------------------------------------------
  '列幅に縮小
  xlSheet.Cells(8, 1).Value = "列幅に合て縮小表示"
  xlSheet.Range("A8").ShrinkToFit = True '転載禁止
'----------------------------------------------
  '数値・日付・時刻等の表示形式を設定する
  'NumberFormatプロパティでセルの書式設定の表示形式ある形式を指定する。
  xlSheet.Cells(4, 4).Value = "123456789"
  xlSheet.Range("D4").NumberFormat = "###,###" '転載禁止

  '桁区切りならこれでも設定できます(ヘルプの使用例は違っている?)
  '書式→スタイルで設定できるスタイル
  xlSheet.Cells(7, 3).Value = "123456789"
  xlSheet.Range("A1:C7").Style = "桁区切り" '転載禁止
'----------------------------------------------
  '範囲を指定してセルの内容をクリア
  xlSheet.Range("A1:H20").Clear '転載禁止
'----------------------------------------------
  '範囲を指定して書式をクリア
  xlSheet.Range("A1:H20").ClearFormats '転載禁止
'----------------------------------------------

  '行の高さを標準に戻す
  xlSheet.Range("A1:A20").RowHeight = xlSheet.StandardHeight '転載禁止
'----------------------------------------------
  '列幅を標準に戻す
  xlSheet.Columns("A:N").ColumnWidth = xlSheet.StandardWidth '転載禁止

入力済みセル領域を調べる
  '指定のセル位置を含む空白行と空白列に囲まれた最小のセル範囲を取得
  'Activateなセル("D5")があるActivateセル領域を選択します。
  xlSheet.Range("D5").Activate
  xlApp.ActiveCell.CurrentRegion.Select
'----------------------------------------------
  'Address プロパティでその範囲を A1 形式で取得。
  xlSheet.Cells(11, 1).Value = "セル D5 があるActivateセル領域は " & _
     xlApp.ActiveCell.CurrentRegion.Address(False, False, xlA1) & _
         " の範囲です。" '転載禁止
'----------------------------------------------
  'xlSheet 上の使用済みのセル範囲を取得
  xlSheet.Cells(13, 1).Value = "使用済みセル領域は " & _
     xlSheet.UsedRange.Address(False, False, xlA1) & " です。"

改ページを設定・削除する
  'セル H30 の上側に水平方向に改ページを挿入します。
  xlSheet.HPageBreaks.Add before:=xlSheet.Range("H10") '転載禁止
'----------------------------------------------
  'セル H30 の左側に垂直方向に改ページを挿入します。
  xlSheet.VPageBreaks.Add before:=xlSheet.Range("F10")
'----------------------------------------------
  'シートの改ページ設定をすべて削除します。
  xlSheet.ResetAllPageBreaks '転載禁止
'----------------------------------------------
  '印刷するセル範囲を設定
  xlSheet.PageSetup.PrintArea = "$A$1:$H$50" '転載禁止
'----------------------------------------------
  '改ページプレビューを表示する
  'xlSheet.Activate
  'xlApp.ActiveWindow.View = xlPageBreakPreview
  '上記コードよりも下記のようにWindowsを明記する事

  xlApp.Windows("Test21.xls").View = xlPageBreakPreview

  '又は
  xlApp.Windows.Item(1).View = xlPageBreakPreview '転載禁止
'----------------------------------------------
  '改ページプレビューを閉じる
  xlApp.Windows.Item(1).View = xlNormalView '転載禁止
'----------------------------------------------
  '印刷範囲の解除
  xlSheet.PageSetup.PrintArea = ""  

VBからExcelのマクロを実行する
  'マクロを作成したBookは各自用意して下さい。
  'この状態で起動した場合マクロの警告は表示されません。
  '(Excel 2007 でも実行でき警告は表示されません)
  '警告を表示してすべてのマクロを無効にするにチェックが入った状態でも)
'----------------------------------------------
  '標準モジュール内に記入されている場合
  'xlApp.Run ("subMacroTest") '転載禁止
  xlApp.Run ("test21.xls!subMacroTest") '転載禁止 
'----------------------------------------------
  'Sheet1等に記入されている場合
  'xlApp.Run ("Sheet1.subMacroTest1") '転載禁止
  xlApp.Run ("test21.xls!Sheet1.subMacroTest1") '転載禁止
'----------------------------------------------
  'エクセルのシートに貼り付けてあるコマンドボタンを実行
  'xlApp.Run ("Sheet1.CommandButton1_Click") '転載禁止
  xlApp.Run ("test21.xls!Sheet1.CommandButton1_Click")  '転載禁止

セルに色(内部色)を設定する
  'セルに色(内部色)を設定する

  xlSheet.Range(xlSheet.Cells(1, 1), xlSheet.Cells(3, 3)). _
            Interior.Color = RGB(0, 255, 0) '転載禁止
  xlSheet.Range("A5:D7").Interior.Color = QBColor(12) '転載禁止
'----------------------------------------------
  'セルに色(内部色)を標準にする
  xlSheet.Range("A1:C3").Interior.ColorIndex = xlNone '転載禁止
マクロの警告のメッセージを表示させない
                 これは過去のログの中にあります。#1227・#1229です。
ログより抜粋
    1.マクロの警告が表示
    Set myXlsApp = CerateObject("Excel.application")
    Set myXlsBook = GetObject("エクセルファイルのPATH")

    2.マクロの警告が表示しない
    Set myXlsAPP = CreateObject("Excel.Application")
    Set myXlsBook = myXlsAPP.Workbooks.Open("エクセルファイルのPATH")

  No.1229 Re:既存のExcel起動について  投稿者:みゃお さん
    マクロからWorkbooks.Openでブックを開くと、警告は表示されません。
    これはEXCELのみで試しても同じです。
    
    3.ここの[既存のエクセルファイルを開く]の方法で起動すると警告は表示
      されません。
  
保存確認のメッセージを表示させない。
  簡単なことなのですが、よく掲示板で質問があるので書いておきます。ここのサンプルでも、いくつか使っておりますが、CSV形式に保存する場合等シツコイ位確認のダイアログが表示されますが、次の一行を加えると表示することなく終了できます。

保存処理をするまでに、どこかに記入して下さい。

  xlApp.DisplayAlerts = False

以下ヘルプより抜粋
このプロパティの既定値は True です。マクロの実行中に、ユーザーに入力を促すメッセージや警告メッセージを表示させないようにするには、このプロパティに False を設定してください。

このプロパティを False に指定した場合、クロスプロセスコードの実行中以外は、コードの終了時に自動的に True に変更されます。

ブックを変更し SaveAs メソッドで既存のファイルを上書きする場合、上書きの警告メッセージは既定値では表示されません。DisplayAlerts プロパティが True に設定されている場合に表示されます。



2002/04/19
2006/12/12


VBレスキュー(花ちゃん)
Visual Basic6.0  VB6.0