[[20100201121659]] 『セルの境目を超えての文字表示』(かっぱ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『セルの境目を超えての文字表示』(かっぱ)
 普通、セルからはみ出た入力データは、セルの境目を超えて表示されると思うのですが、
 どうしたことか、データが入っていない左右のセルの下に潜り込んでしまい困っています。
 関係セルはマクロで他のシートから値だけをコピーする形態を取っています。改良前は、
 関係セルを含め前後10個のセルを結合していました。マクロを組むに当たり、コピー元も
 セルの結合を解除しました。
 通常のように、セルからはみ出た入力データは、セルの境目を超えて表示されるようにす
 るにはどうすればよいのでしょうか。
 どなたか、お教え願いませんか。
 [Excel2003,WindowsXP]


 左右のセルをDeleteされたら出てきませんか?(ROUGE)

 >データが入っていない左右のセルの下に潜り込んでしまい困っています。
 ということは、そのセルは中央構えになっています?
 とりあえず、左寄せにしてみるとか、あとは左右のセルがもし結合されているなら
 解除してみるとか。


 ROUGEさんの追加というか補足というか
 値が無いように見えるセルでDeleteキーで消してみて出るようですと

 値が無いように見えても""が入っていたりします

 (momo)

 返事が遅れ、すみませんでした。
 ROUGEさん、ありがとうございました!
 >左右のセルをDeleteされたら出てきませんか?
 出てきました。

 momoさん、恥ずかしいのですが、
 >値が無いように見えるセルでDeleteキーで消してみて出るようですと
 >値が無いように見えても""が入っていたりします
 「値が無いように見えても""が入っていたりします」の意味がよく分かりません。
 「値がない」と「""が入っている」と違いがあるのですか?
 それは、どんなときに生じるのですか?   (かっぱ)

 B1セルに「=""」と言う式を入れます。
 B1セルをコピーして、右クリック→形式を選択して貼り付け→値 貼り付けします。
 B1セルには何も表示されていませんし、数式バーにも何も表示が有りません。

 A1セルにテキトウに長い文字を入力すると
 B1セルの下に文字が隠れて仕舞うと思います。

 A2セルに「=TYPE(A1)」の式を入れて、C2セルまでフィルドラッグすると
       [ A ]  [ B ]  [ C ]
 [ 1 ] ABCDEF
 [ 2 ]   2      2      1
 の様に表示されると思います。

 TYPE関数の戻り値は
 1 だったら 数値 、 2 だったら テキスト をあらわします。

 A1セルに入っているのは明らかに文字列ですから「2」に疑問は無いでしょう。
 C1セルには入力が有りませんが、別のセルに「=C1」とすると「0」が表示されるので
    まぁ、「1」と言う結果でも許せなくは無いと思います。
 問題のB1セルは、何も入っていない様に見えるのに、テキストが入っています。
 入力したのは「""」ですよね。

 C1セルは「値が無い」セルで
 B1セルが「""が入っている」セルです。

 実用では、例えばB1セルに =IF(A1="","",A1)なんて式を入れておいて
 A1セルに入力が無いときに、値貼り付けをすると「""」が貼り付く事になると思います。

 今回の状況が、こういった事だったかどうかは分かりませんが。

 (HANA)

 HANAさん、丁寧な説明ありがとうございました。
 >実用では、例えばB1セルに =IF(A1="","",A1)なんて式を入れておいて
 >A1セルに入力が無いときに、値貼り付けをすると「""」が貼り付く事になると思います。
 この条件にぴったり当てハマリます。
 う〜ん、見た目では同じなのに・・・
 目からウロコです。                (あらくま)   

 でしたら
 >関係セルはマクロで他のシートから値だけをコピーする形態を取っています。
 この時に、 .Value = .Value でコピーすると良いかもしれません。

 B2セルのTYPE関数はそのままで
 B1セルに「=""」を入れると
 当然、B2セルには「2」が返されています。

 が、
    Range("B1").Value = Range("B1").Value
 と言ったマクロを実行すると「1」に変わります。
    Range("B1").Copy
    Range("B1").PasteSpecial Paste:=xlPasteValues
 でしたら、「2」のままです。

 (HANA)


 HANAさん、ありがとうございました。
 更なるコメント、ますます理解がしっかりとしてきました。
 (あらくま)

 HANAさん、お教えいただいた
 >Range("B1").Value = Range("A1").Value
 の形を使って
 Range("E1:G7").Value = Range("A1:C7").Value
 のようなマクロに変えてみました。
 感激です。問題解消です。
 ありがとうございました。

 ところで、お教えください。
 マクロ関係の書籍には、値だけを転記する場合
 >Range("A1").Copy
 >Range("B1").PasteSpecial Paste:=xlPasteValues
 の形がよく示されています。
 なぜ、
 >Range("B1").Value = Range("A1").Value
 が一般的なものとして示されていないのですか?
 特別な理由はないのでしょうか?
 的を射た質問ではないかもしれませんが・・・・・
 (あらくま)


 忙しい間にHANAさんフォローありがとうございます。

 値の転記、ようするに値のコピーなのでPasteValuesの方を紹介しているのでしょうかね?
 書籍はほとんど読んだことが無いのでわかりませんが
 Range("B1").Value = Range("A1").Value
 を、直訳すると値を転記するというよりはB1セルのRangeオブジェクトのValueプロパティに
 A1セルのRangeオブジェクトのValueプロパティの値を取得して入れる。となるのかな?

 明確な違いや理由は先の件もそうですが、PasteValuesは""を値として貼り付ける。
 Valueプロパティに""(何も無い)を入れても、何も無いまま。
 (自動でEmptyにキャストしてるのかな?)
 という感じでしょうか?
 どちらが良いとかは、その時の処理の内容によっても変わると思います。
 (momo)


 momoさん同様、私も書籍を見ないので分かりませんが
 ワークシートでの操作を元に考えた方が
 イメージが付きやすいのではないかと思います。

 PasteSpecialでしたら、マクロの記録で出来るコードなので。。。
 実行結果も、手作業でやったのと同じ結果に成ります。

 .Value = .Value とすると
 「""」が無くなったり
 今回はそもそも、数式で表示している様ですので関係ないですが
 フリガナ情報も無くなってしまいます。

 書籍でも、変数に値を入れる とか
 変数の値をセルに書き出す とかは
  変数 = Range("A1").Value
   Range("A1").Value = 変数
 等と書かれていると思いますが。

 値の【コピー】 と考えると
 やはり .Copy だと思います。

 (HANA)

 momoさん、HANAさん、本当にありがとうございました。
 見た目の結果が同じでも、コードの違いで、見えないところに相違が生じる。
 あるとき(ある条件のとき)、その違いが顕在化する。
 奥深いです。
 大変勉強になりました。
 最後まで、お付き合いいただきまして、感謝いたします。  (あらくま)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.