.Valueが省略されてる事を確認する方法とは?

このQ&Aのポイント
  • .Valueが省略されていることを確認する方法を教えてください。
  • Excel 2007でSub a()を実行すると、A1セルにaが入力されますが、.Valueが省略されているのでしょうか?確認する方法を教えてください。
  • Range.Valueプロパティについて、セル範囲の値を設定するための方法を教えてください。
回答を見る
  • ベストアンサー

「.Value」が省略されてる事を確認する方法を教

エクセル2007を使用しています。 Sub a() Range("a1") = "a" End Sub を実行すると、A1セルにaが入力されますが、 これは("a1")の後に「.Value」が省略されているのでしょうか? それを確かめたくヘルプを見たのですが、 ******************************************************** Range.Value プロパティ 指定されたセル範囲の値を表すバリアント型 (Variant) の値を設定します。 値の取得および設定が可能です。 構文 式.Value(RangeValueDataType) 式 Range オブジェクトを表す変数です。 パラメータ 名前 必須/オプション データ型 説明 RangeValueDataType オプション バリアント型 (Variant) セル範囲の値のデータ型を指定します。 xlRangeValueDataType クラスの定数を使用します。 ******************************************************** と書いてあり、いまいちよくわかりません。 「.Value」が省略されてる事を確認する方法を教えてください。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.3

同じような話題が見付かったのでリンク http://okwave.jp/qa/q6372495.html http://msdn.microsoft.com/ja-jp/library/aa537180%28office.11%29.aspx > Range オブジェクトのデフォルト プロパティは、Value プロパティ と公式に書かれているけど、 http://www2.aqua-r.tepm.jp/~kmado/kcolumn.htm 実際に詳細な動きを確認したら、非表示の _Default ってのが呼ばれてる みたいで、引数を指定すれば Item プロパティの処理を実行できてしまうと。 (※引数を指定しなければValueプロパティの処理) 尚、オブジェクトブラウザで非表示のメンバを表示するには、 右クリックメニューから[非表示のメンバの表示]を選択します。 まぁ、そこまで正確に知っても役に立つのか分かりませんが、 実際の関数定義を確認しないとキッチリ調べるのは難しいと思います。 まぁ私の中では「省略してはいけません」という結論になってますので そもそも確認する気が起こらないのですが。

gtrfhyuj666
質問者

お礼

ありがとうございました。よく読んでみます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

>これは("a1")の後に「.Value」が省略されているのでしょうか? そう言うことだ。 ーー 省略されているということは、Valueなんだから、わざわざ確認方法など用意して無いと思うよ。 .Valuei以外は省略できないはずだから。 ほかプロパティなどを書き忘れていたら(または省略したら)、実行結果が思い通りにならないはずだから。それぐらいテストして気づくだろう。 >「.Value」が省略されてる事を確認する方法を教えてください。 .Value以外の場合は省略できないのだから、誤って省略しているわけだ。そんなものはわかるはず無い。 データタイプを確認しても理論的に判るはず無い。 -- 何かで懲りた経験をしたのなら、自分で.Valueは省略しないと決めて、実行したら。

gtrfhyuj666
質問者

お礼

ありがとうございました。

noname#208392
noname#208392
回答No.1

Rangeオブジェクトのところに、デフォルトプロパティがValueだって書いてあったはずだけど。

gtrfhyuj666
質問者

お礼

”デフォルトプロパティがValue” 納得しました。ありがとうございました。

関連するQ&A

  • エクセルVBA:valueプロパティについて(省略可能?)

    VBA初心者です。よろしくお願いします。 例として、アクティブシートにA1=10,A2=20と入力されているとき、 次の”test01誤”プロシージャーを実行すると、A3が「30」となるわけですが、うっかり、valueプロパティを書きもらしていることに気がつきました。本来なら、”test01正”のように書くべきところだったのでしょう。しかしエラーがでることなく結果が正しくでるということは、valueプロパティは省力可能と理解していいのでしょうか?省略すると、プログラム上問題を起こす可能性があるのでしょうか? よろしくご指導ください。 Sub test01誤() Range("A3") = "=A1+A2" End Sub Sub test01正() Range("A3") .value= "=A1+A2" End Sub

  • VBA 変数Variantは万能??

    エクセル2002使用です。 A1セル  日付入力(ex.2005/7/25) A2セル  A1セルから月のみワークシート関数で取得 =month(A1) A3セル  日付入力 '12ヶ月分(ex.2005/7/25~2006/6/25) A4セル  A3セルから月のみワークシート関数で取得 =month(A3) ’12ヶ月分 3行目、4行には12ヶ月分AからL列に同じ設定があります。 (この質問にはあまり関係ないですが・・・) A7セルにA2の値を参照して入力のため sub test() Dim Myrg as variant ’またはstring、Duble Set Myrg = Range("A4:L4") _ .Find(what:=range("A2").value, lookat:=xlWhole) range("A7").value = myrg end sub とすると、Myrgはemptyのままで数値を拾ってくれません。 A2セルとA4~L4セルをA5セルA6~L6セルにフォーマットして sub test() Dim Myrg as variant ’またはstring、Duble  Range("A5").Value = Format(Range("A2").Value, "##")  Range("A6").Value = Format(Range("A4").Value, "##")  Range("B6").Value = Format(Range("B4").Value, "##")   ’(以下12ヶ月分フォーマット) Set Myrg = Range("A6:L6") _ .Find(what:=range("A5").value, lookat:=xlWhole) range("A7").value = myrg end sub とするとちゃんと数値を拾ってくれます。 分からないのは、  1.変数variantは、万能ではないのでしょうか?  2.ワークシート関数で得た数値はすべて一度フォーマットする必要があるのでしょうか?    フォーマットしない良い方法はあるのでしょうか? ちなみにキーボードから入力した数値もちゃんと拾ってくれます。 詳しい原因がわからないのでよろしくお願いします。

  • 時刻の比較で質問です

    EXCEL2010 EXCELで時刻の比較結果を元に処理したいです。 B13にはいろいろな時刻の値が入ります。 A17は9:00が入っています。 B21は0:30が入っています。 B13からA17を引いて0:30以上だったら、 B12セルにA17セルの値9:00 それ以外は B12セルに前日16:00を表示 というマクロです。 Sub hikaku() Dim st As Variant st = Range("B13").Value '条件に当てはまらなかったらB12セルに前日16:00を表示 Range("B12").Value = "前日16:00" Select Case True Case st - Range("A17").Value >= Range("B21").Value Range("B12").Value = Range("A17").Value End Select End Sub B13セルが9:30だとB12セルに前日16:00を表示 B13セルが9:31だとB12セルに9:00が表示されます。 ちなみに Range("B23") = st - Range("A17").Value Range("B24") = Range("B21").Value を実行したらB23,B24共に0:30と表示されます。 B13セルが9:30だとB12セルに9:00を表示したいのです。 Case st - Range("A17").Value >= Range("B21").Value で指定している=が効いていないのですが、何がおかしいのでしょうか?

  • midステートメント セルを指定したい

    エクセルなのですが、 Sub N文字目を置換する1() Dim N As Long Range("a1").Value = "abcde" N = 2 '置換する文字の位置 ’start(省略不可) Mid(Range("a1").Value, N) = "X" MsgBox Range("a1").Value End Sub このように、セルを指定することはできないのでしょうか? このコードを実行しようとすると、 Mid(Range("a1").Value, N) = "X"の部分で「変数が必要です」とコンパイルエラーになります。 Sub N文字目を置換する2() Dim moji As String Dim N As Long Range("a1").Value = "abcde" moji = Range("a1").Value N = 2 Mid(moji, N) = "X" MsgBox moji End Sub このように、セルの値を一度変数に入れると問題なく実行できますが、 なぜダイレクトにmidステートメントでセルを指定できないのかわからないので教えてください。 よろしくお願いします。

  • 検索方法について

    マクロの記述方法? Sub データの検索()        Dim myRange As Range Set myRange = Range("範囲").Find(what:=Range("セル").Value LookIn:=xlValues) これで(セル)と同じ値を持つセルを検索できるんですが、    If Not myRange Is Nothing Then ↑だった場合 見つかったセルの終端セルのひとつ右のセルを取得して ↑このマクロ記述がどうやってもできません・・・ どうすればよいのでしょうか? ちなみに違うシートから範囲を決めることって可能でしょうか? (シート1にユーザーフォームを起動させるボタンあり) (シート1のA1のセルと同じデータをシート2のデータから検索したい) ぐちゃぐちゃですがわかる方いますでしょうか・・・?

  • 指定した範囲内の値を結合するユーザ定義関数

    いつもお世話になっています。VBA初心者です。 指定した範囲内(開始セルと終了セルを指定)に入力された値を結合するユーザ定義関数を作成しようと思い、以下のようなコードを書いたのですが、実行すると「#VALUE!」のエラーになってしまいます。 ウォッチ式を見たところ、Range(startCell, endCell)の部分がEmpty値になっているようなのですが、どうしてこれがダメなのかわかりません。 どなたか解説していただけないでしょうか。 よろしくお願いしたします。 Function joinValue(startCell As Range, endCell As Range) As Variant Dim myResult As Variant For Each myResult In Range(startCell, endCell) myResult = myResult.Value & myResult.Value Next joinValue = myResult End Function

  • エクセルマクロ:範囲の選択

    マクロで範囲を指定したいのですが、 dataと名づけたシートA1に例えば8という値、A2に20という値があります。 この数字は他のセルから参照する計算式になっていて再計算をするたびに変わります。 この時、C8:E20の範囲を指定したいのですが、やみくもに Dim c As Integer c = 3 'C列 Range(Cells(Sheets("data").Range("A1").Value, c), Cells(Sheets("data").Range("A2").Value, c + 2)).Select Selection.Copy などと書いてみたのですが、うまくいきません。 どのように記述すればよいか、教えてください、宜しくお願いいたします。

  • ウォッチウインドウで確認すると、「Range("a1").Value」は「十」ボタンができる

    Sub test() Dim Strmoji As String Strmoji = "a" MsgBox Range("a1").Value MsgBox Strmoji End Sub Range("a1").ValueとStrmojiをウォッチ式に追加して このコードをF8でデバッグしていくと Range("a1").Valueの方だけ「十」ボタンが付き、 クリックすると広がりたくさんの情報が表示されています。 これはRangeだからですか?Cellも試してみたけど同じでした。 しかしなぜ、Strmojiは「十」ボタンがでないのでしょうか? 「十」ボタンがでるのとでないのでは何が違うのですか? よろしくお願いします。

  • VBA:日付を配列に入れ別セルに転記するとデータ型が変わる

    データを別シートに転記するVBAコードを書いていて気付きました。 日付データをバリアント型の配列に入れて、再度書き出すと 21/2/2005 のように表示され、さらに日付ではなく、文字列になってしまいました。 具体的には下記のような内容です。Sheet1 の A1:A10 に 2005/2/21 のような日付が入力されています。 1. セル範囲のデータをバリアント型の配列に格納 2. 1.を別のセルへ一括転記を行う Sub TestMacro()   Dim Buf As Variant   With Sheets("Sheet1").Range("A1:A10")     Buf = .Value     '・・・(1)     .Offset(0, 3) = Buf  '・・・(2)   End With End Sub ウォッチ式で変数を確認すると(1)および(2)の時点では #05/02/21# Variant/Date型 と正しく日付として扱われているようです。しかし、転記されたセルを見てみると、「文字列で 21/2/2005 」となっているのです。 2005/2/21 が返されるものと思うのですが、なぜ、このような現象が起こるのでしょうか?何かとんでもない勘違いをしているのでしょうか? テスト環境は Win98SE + EXCEL2002 です。よろしくお願いします。

  • エクセルVBAでセル範囲のデータをクリップボードに

    セル範囲のデータをテキストとしてクリップボードに取り込みたいのです。 http://okwave.jp/qa/q5650002.html#16327676 の回答ANo2を見て Sub test01() Dim myData As DataObject Dim myCb As Variant Dim x x = "TESTデータです。" Set myData = New DataObject myData.SetText x myCb = myData.GetText myData.PutInClipboard End Sub は出来ました。 そこで、セル範囲A1:B3をクリップボードに貼ろうといろいろやってみました。 一応、下記でできましたが、実際にはもっと広い範囲を取り込みたいので、もっと簡単な方法はないでしょうか? Sub Clip() Dim myStr As String Dim myData As DataObject Dim myCb As Variant Set myData = New DataObject With Sheets(1) myStr = .Range("A1").Value & ":" & .Range("B1").Value & _ vbNewLine & .Range("A2").Value & ":" & .Range("B2").Value & _ vbNewLine & .Range("A3").Value & ":" & .Range("B3").Value End With myData.SetText myStr ', 1 myCb = myData.GetText If MsgBox("データ" & vbNewLine & myCb & " をクリップボードに送りますか? ", vbYesNo + vbQuestion, "確認") = vbNo Then Exit Sub End If myData.PutInClipboard End Sub