2013/11/30

ファイル・フォルダ選択ダイアログの左側ショートカットをカスタマイズする

 ファイルやフォルダを選択するときにでるダイアログ
毎回、「デスクトップ」や「マイコンピュータ」から目的のフォルダまで移動するのに10秒ほど時間を無駄にしてはいませんか?

 実は、この選択ダイアログ(正式名称:共通オープン ファイル ダイアログ)の左側のショートカットはカスタマイズすることができる。
※以下、WinXPの画面で説明しているが、Win7でも同じ方法で設定できることを確認済み


2013/11/23

【VBA】印刷範囲の開始行(列)と最終行(列)を取得する

   Excelの印刷範囲を取得するためには「WorkSheet.PageSetup.PrintArea」を使用する。


印刷範囲の取得



 下図のような印刷設定のとき、「ActiceSheet.PageSetup.PrintArea」を使うと、
$C$4:$H$10」という値が返ってくる。


 
 このPrintAreaを使用すれば印刷範囲が設定されているかがわかる。
If ActiveSheet.PageSetup.PrintArea = vbNullString Then
    MsgBox "印刷設定がされていません。"
End If



印刷範囲の開始行(列)と最終行(列)を取得する



2013/11/16

【Oracle】LEFT関数、RIGHT関数の代わりにSUBSTR関数を使う

 PL/SQLを使っているときVBAの感覚で「RIGHT(lv_value, 2)」とかいたらコンパイラさんに怒られてしまった。
どうやらOracleにはVB系にあるLEFT関数やRIGHT関数は用意されていないようだ。

 LEFT関数は特に問題ないが、可変長データを扱って後ろ(右)から数文字取得したいというときにRIGHT関数が使えないのはかなり不便だ。
調べてみるとどうやらSUBSTR関数でもRIGHT関数のような書き方ができるらしい。

2013/11/09

【VBA】Excelのシート名を一括置換する

 Excelでシート内の文字列は置換できるのに、なぜシート名の置換ができないのか。
シート名を一括で編集したい場面は多々ある。


シート名を一括置換する



 それを可能にするのが、以下のVBAマクロ
For Eachでワークシートオブジェクトを取得し、文字列の置換を行う。

Sub シート名置換()
    Dim ws As Worksheet
    Dim myFind As String
    Dim myReplace As String
    
    myFind = Application.InputBox("検索文字列は?", "シート名置換", Type:=2)
    myReplace = Application.InputBox("置換文字列は?", "シート名置換", Type:=2)
    
    For Each ws In ActiveWorkbook.Worksheets
        On Error Resume Next
        ws.name = Replace(ws.name, myFind, myReplace, 1, -1, 2)
    Next ws
End Sub



2013/11/02

Excelで「データを貼り付けできません。」というエラーが出た時の対処法

  Excelでなぜか図形が挿入できない。オブジェクトを貼り付けることができない。
こんなしょうもないことで、10分を無駄にしてしまった。


その対処法をまとめる。

Google先生に聞いたところ、以下の対処法があったが、どれもよくわからなかった。
  1. クリップボードの上限数(24個?)に達してしまったため
  2. シートを複数選択している
  3. Excelの設定でオブジェクトが「すべて非表示」になっている
  4. シートが保護されている状態になっている
  5. ブックの共有がされている

クリップボードにはデータ入れていないし、シートは1つしか選択していない。
シートも保護されていないし、ブックも共有されていなかった。