Home > モーグ公式ブログ > 【オフパー】Vol.819 マウスをドラッグして、シート間でセルを移動させる?!

【オフパー】Vol.819 マウスをドラッグして、シート間でセルを移動させる?!





2009年11月03日

【オフパー】Vol.819 マウスをドラッグして、シート間でセルを移動させる?!

◆━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◆
 あなたのスキルに+1 
    
          Office & VBA パーフェクトマスター
   
 >> http://www.moug.net/ 【オフパー】Vol.819 2009/10/28  
◆━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◆

【目次】

 ★ モーグからのお知らせ
   マウスをドラッグして、シート間でセルを移動させる?!
   〆切間近!貴方もグーグル達人になれる書籍プレゼント

 ★ オデッセイコミュニケーションズからのお知らせ
   新VBAエキスパート試験 合格者の声が続々寄せられています!

 ★ Office 製品共通一般機能テクニック
   〜 セルの文字列を斜めに表示する

 ★ 一問多答!!

 ★ モーグフリーソフト紹介

 ★ 田中亨の Excel VBA テクニック
   〜 ###表示かどうかを判定する
   
 ★ 編集後記
***************************************************************************
 ★モーグからのお知らせ
***************************************************************************

 ▼マウスをドラッグして、シート間でセルを移動させる?!
   
  同じシート内であれば、ドラッグ操作でパッとセルの移動はできますが、
  異なるシートへは、[切り取り]と[貼り付け]を利用していませんか?
  実は、異なるシート間でのセル移動もドラッグ操作でできるんです!
  
  ╋…━…━…━…━…╋
    ♪方法はこちら♪ → http://www.moug.net/tech/exopr/0030019.htm
  ╋━…━…━…━…━╋


 ▼〆切間近!貴方もグーグル達人になれる書籍プレゼント
   
  10月の書籍プレゼント 応募締め切りはいよいよ今週金曜日の18時まで!!
  グーグルで、欲しい情報を確実にゲットできる検索ワザをマスターできる1冊!
  まだ間に合います。この機会にぜひご応募ください♪
  
  ╋…━…━…━…━…╋
    ♪方法はこちら♪ → http://www.moug.net/present/index.html
  ╋━…━…━…━…━╋


 ◆お詫び◆
 10月21日配信のオフパーにて、生年月日から年齢を計算する方法として
 ExcelのDATEDIF関数をご紹介しましたが、引数を“MD”“YD”にした際に正しく
 計算されない可能性があるようです。大変申し訳ありませんでした。
 
***************************************************************************
 ★オデッセイコミュニケーションズからのお知らせ
***************************************************************************

 ▼新VBAエキスパート試験 合格者が続々増えています!
 
  2009年春にスタートしたVBAエキスパート新試験。おかげ様で多数の方に
  受験していただいています!
  業務効率の向上や再就職、職場復帰への自信につながったというご意見も!
    
  ╋…━…━…━…━…╋
    ♪詳細はこちら♪ → http://vbae.odyssey-com.co.jp/vbae/goukaku_index.html
  ╋━…━…━…━…━╋

***************************************************************************
 ★Office 製品共通一般機能テクニック     
***************************************************************************
<Contents>
セルの文字列を斜めに表示する(Excel 2000/2002/2003/2007)

●概要●
表の項目名が長いと、すべての文字がセルの列幅の中に収まらず、途中で切れて
しまうことがあります。セル内で折り返すように書式を変更したり、文字サイズを
小さくしたり…と、何とかして文字が表示されるように調整してもよいのですが、
今回は項目名の表示を斜めの方向に変更することで、表の列幅を広げずに項目名を
表示する方法を紹介します。

●詳細●
<Excel 2003以前のバージョン>
1.表の項目を範囲選択

2.[書式]メニューの[セル]を選択

3.[セルの書式設定]ダイアログボックスの[配置]タブを選択

4.[方向]の度数を入力

5.[OK]ボタンをクリック

<Excel 2007>
1.表の項目を範囲選択

2.[ホーム]タブの[配置]グループにある[方向]を選択

3.[左回りに回転]または[右回りに回転]を選択

●補足●
Excel 2007でも、[セルの書式設定]ダイアログボックスの[配置]タブから文字列の
角度を細かく設定できます。

■Excel一般機能 セルとシートの操作関連のテクニックはこちらから
⇒ http://www.moug.net/tech/exopr/0031.htm

***************************************************************************
 ★一問多答!!
***************************************************************************
勉強したことをきちんと覚えているかを確認することは大切です。
一問多答では、ExcelやWordなどを日常使用されている方に知っておいてほしい機能
や多くの方が疑問に思われている題材をテーマに出題します!
今回は『Excelの検索関する関数』の問題です!
---------------------------------------------------------------------------
例題)A列に氏名、B列に20〜49歳までの年齢が入力されている表で、C列には
   「=VLOOKUP(B2,$E$2:$F$4,2,TRUE)」の数式を使って年代を表示したい。
   F2セルからF4セルに「20代」「30代」「40代」と入力されているとき、
   E2セルからE4セルに入る数値として正しいものを1つ選びなさい。

  1. E2セル:10、E3セル:20、E4セル:30

  2. E2セル:20、E3セル:30、E4セル:40

  3. E2セル:29、E3セル:39、E4セル:49

  4. E2セル:30、E3セル:40、E4セル:50


正解はモーグブログにて発表中です。ご確認ください!
⇒ http://www.moug.net/ads/ofp_vba.html

モーグブログ内では、回答だけでなく簡単な解説をご紹介しています!
ぜひご覧くださいね。

***************************************************************************
 ★モーグフリーソフト紹介
***************************************************************************
モーグのフリーソフトコーナーで公開しているソフトをご紹介します。

・EXCEL-LENCE(エクセレンス) Ver.1.01
 http://blog.moug.net/archives/51628794.html

・街の不動産屋さん ver.3.00
 http://blog.moug.net/archives/51550423.html
 
皆さんの気になるフリーソフトは見つかりましたか?
モーグのフリーソフトコーナーでは「財務・会計管理」「アドイン」
「ビジネス・業務用」「ユーティリティー」「家庭向け・アミューズメント」など
多種多様な、お役立ちフリーソフトが満載です!
いますぐ、モーグフリーソフトコーナーへアクセスを!

モーグフリーソフトコーナーへ ⇒ http://www.moug.net/freesoft/

***************************************************************************
 ★田中亨の Excel VBA テクニック
***************************************************************************
『田中亨の Excel VBA テクニック集』。数々のExcel著書で有名なMicrosoft MVP
保有者 田中亨さん がオフパー読者のために、より実践に即した、今すぐ使える
テクニックをあなたに伝授!  これは毎週目が離せない!!
---------------------------------------------------------------------------
■###表示かどうかを判定する(Excel 97/2000/2002/2003/2007)

セルの横幅に収まらない数値は「###」のように表示されます。
ちなみに、「#」は"シャープ記号"ではありません。
シャープは「♯」です。五線譜と見間違わないように横線が傾いています。
セルに表示されるのは「#」のように縦線が傾いている"ナンバー記号"です。

まぁ、そんなトリビアはともかく「###」表示には、多くのユーザーが
苦しめられた経験を持っているはずです。
ここはひとつ、「###」表示されているセルを見つけるマクロを作ってみましょう。

まず、アクティブセルに適当な数値を入力して、列幅を狭くします。
数値が表示しきれないほどの列幅になると、アクティブセルは「###」のように
表示されるはずです。
この状態で、アクティブセルのValueプロパティを調べてみましょう。

Sub Sample1()
  MsgBox ActiveCell.Value
End Sub   

RangeオブジェクトのValueプロパティは、セルに入力されている値を返します。
「###」は値ではなく、表示されているだけですから、Valueプロパティでは
判定できません。

もちろん、表示形式を表すNumberFormatプロパティや、数式を表すFormulaプロパティ
を使っても「###」かどうかを調べることはできません。
「###」と表示されるのは、セルに入力した数値の桁数が、セルの横幅よりも
小さいときですから、数値の桁数とフォントの幅から数値全体の横幅を計算して
さらに列の横幅と比較して小さかったら・・・などと難しく考える必要はありません。
Textプロパティを使えばいいんです。

Sub Sample2()
  MsgBox ActiveCell.Text
End Sub   

Textプロパティは、セルに表示されている文字列をそのまま返します。
たとえば、セルに「1234」と入力して「#,##0円」の表示形式を設定した場合
Valueプロパティは「1234」を返しますが、Textプロパティはセルに表示されている
「1,234円」を返します。なお、Textプロパティは読み取り専用です。

Textプロパティを使って、セルに表示されている文字列の左1文字が「#」かどうかを
判定すればいいのですが、「ちょっと待てよ、セルに"###"と入力されていたら
区別がつかないじゃないか」という疑問を持たれた方もいることでしょう。
安心してください。それも簡単に判別できます。

先に解説したとおり、列幅不足が原因の「###」は、実際にはセルに数値が
入力されています。ここでは、どんな数値かは問題ではありません。
実際には「###」というデータが入力されているのではないのですから、
ValueプロパティとTextプロパティが異なっているはずです。

Sub Sample3()
  With ActiveCell
    If .Value <> .Text Then
      If Left(.Text, 1) = "#" Then
        MsgBox "セルの横幅が足りません"
      End If
    End If
  End With
End Sub   

しかし、これで完璧ではありません。
「#NAME?」や「#DIV/0!」などの数式エラーも、セル内のデータと表示が異なり
かつ左1文字が"#"で始まっています。
こうした数式エラーの場合は、IsError関数がTrueを返しますので、
その判定も追加しましょう。

Sub Sample4()
  With ActiveCell
    If IsError(.Value) Then
      MsgBox "数式エラーです"
    Else
      If .Value <> .Text And Left(.Text, 1) = "#" Then
        MsgBox "セルの横幅が足りません"
      End If
    End If
  End With
End Sub   

数式エラーが発生しているセルのValueプロパティを「Value <> Text」のように
判定してはいけません。数式エラーセルのValueプロパティは、セル内のデータでは
なくエラー値を返します。エラー値は正常な数値や文字列ではありませんから、
Textプロパティと比較しようとすると、マクロが実行時エラーを起こします。

さて、Sample4の判定を利用して、列幅不足によって「###」のように表示されて
いるセルを探してみましょう。せっかくですから、見つかったら列幅の自動調整を
実行してセル内の数値がすべて表示されるようにしてみます。
任意のセル範囲を選択した状態で、下記のマクロを実行してください。

Sub Sample5()
  Dim c As Range
  If TypeName(Selection) <> "Range" Then
    MsgBox "セル範囲を選択してから実行してください"
    Exit Sub
  End If
  For Each c In Selection
    If Not IsError(c.Value) Then
      If c.Value <> c.Text And Left(c.Text, 1) = "#" Then
        Debug.Print c.Address(False, False) & "の列幅を自動調整します"
        c.Columns.AutoFit
      End If
    End If
  Next c
End Sub   


***************************************************************************
 ★編集後記
***************************************************************************
 10月も今週で終わり、今年もあと2ヶ月です。やり残したことはありませんか?
 毎年思うのですが、本当に1年があっという間になってきています。
 今できることをすぐにやらないと駄目ですね!!
 
 さて、同僚に「最近エクセルで困っていることない??」と聞いてみると、
 「ない」というそっけない返事が…。そこでいろいろなネタを振ってみると、
 「あ、前にどうやっても画面がスクロールできないことが…」と困ったこと発見!
 でも、画面がスクロールできないってどういうこと?!
       スタッフブログへGo!!⇒ http://www.moug.net/ads/ofp_staff.html
                    モーグ メールマガジン編集部(よ)

■登録解除
 メルマガ配信の登録解除を希望される方は、http://www.moug.net/よりログイン
 し、会員情報変更よりメールマガジン配信を「希望しない」にご変更ください。

■広告募集について
 このメールマガジンに広告を出してみませんか?
 広告のお問い合わせは ad@odyssey-com.co.jp まで、お気軽にどうぞ。

◆━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◆
◎このメールマガジンは自社配信システムで配送しております。

◎掲載されている会社名・製品名は、各社の登録商標または商標です。
 Office & VBA パーフェクトマスター(オフパー)に掲載された記事及び
そのリンク先のコンテンツを許可なく転載することを禁じます。
 執筆・編集者および発行者は掲載された内容に起因するトラブルには
一切関与いたしませんので、あらかじめご了承ください。
     ‥‥……━━━━━━━━━━━━━━━━━━━……‥‥

執筆・編集 株式会社オデッセイ コミュニケーションズ
モーグメールマガジン編集部
                 問い合わせ先 moug@odyssey-com.co.jp
                    モーグ http://www.moug.net/
   株式会社オデッセイ コミュニケーションズ http://www.odyssey-com.co.jp
   
◆━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━◆

Posted by mougle at 10:00
Comments(0)

この記事にコメントする

名前:
URL:
  情報を記憶: 評価: 顔