• ベストアンサー

エクセルVBA 現在のセルの4個上のセルの値

こんにちは、 エクセルマクロの質問です。 イミディエイトウィンドウにて 現在のセルの4個上の値を表示しようと以下の文を入力したところエラーになりました。 ?cells(activecell.row-4,activecell.colum).value で 「実行時エラー 438 オブジェクトはこのプロパティまたまメソッドをサポートしてません。」 なぜでしょう? ?activecell.Row-4  ?activecell.colum はそれぞれ 正しく表示されます。

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

  • ベストアンサー
回答No.1

誤:cells(activecell.row-4,activecell.colum).value 正:cells(activecell.row-4,activecell.column).value ではありませんか? あとはrow位置が4以下の場合もエラーになります。

ch20090926
質問者

お礼

うぅ スペルミスでした。 こうゆうミスを自動的に見つけられたらいいんですけどね。 数時間無駄にしちゃいました。 回答ありがとうございました。

その他の回答 (2)

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

質問の記述が、スペル的に正しいなら columーー>column の誤りだけじゃないか。お騒がせ? Sub testt() MsgBox ActiveCell.Row - 4 MsgBox ActiveCell.Column End Sub で確認済み。 すでに回答は出ているが、普通はOffdet を使うよ。 Sub test02() 'ActiveCell.Offset(-4, 0).Select セル選択だけ MsgBox ActiveCell.Offset(-4, 0) '値を取る End Sub ただし5行目以下のセルをアクチブにしていないとエラーになるから、コードとしては、不安定です。チェックを入れる必要があると思う。 VBAはまだ学習が始めて間もないのかな。 綴り的にはBottomとかColumn、Buttonは迷うよね。

ch20090926
質問者

お礼

for i=1 to 20 マクロを学習→挫折 next i こんな感じでやってます。  スペルミスとは恥ずかしい・・・ 

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

>エラーになりました。 >なぜでしょう? という御質問内容に対する直接的な回答では御座いませんが、 >現在のセルの4個上の値を という事であれば、 Activecell.Offset(-4).Value とする方が簡単だと思います。

ch20090926
質問者

お礼

offset があったんですね ありがとうございました。

関連するQ&A

  • エクセルVBAの質問です。

    エクセルVBAの質問です。 セルに特定の値が入力された場合にエラーとし、「再試行」を選択するとセルが修正出来る状態にしたいのですが、下記のコードだと実行時エラーが発生してしまいます。 if cells(10,10).value > 1 then if msgbox("err", vbCritical + vbRetryCancel,"") = vbRetry then Cells(10,10).Select Cells(10,10).Active ⇒ エラー箇所 else Cells(10,10).ClearContents Endif Endif 実行時エラー '438' オブジェクトは、このプロパティまたはメソッドをサポートしてません。 いろいろネットを検索してみましたが、よくわかりませんでした・・・。 VBAは初心者です。 かなり困ってます。 どなたか助言をお願い致します。

  • Excel VBA セル位置が取得できません

    条件1の時、セル位置を変数(gyo1)に代入し、 条件2の時、セル位置を変数(gyo2)に代入。 その後、countif(gyo1:gyo2)として、 その数値を別のセルに表示させる。 という構文を作りたいと思っています。 しかし、adressプロパティを記述しても、「オブジェクトが必要です」とエラーが出てしまいます。 (expressionをSelectionに変えるとエラーは出ないのですが、この違いや意味ってなんでしょうか。) さらに、この構文はFor文で繰り返しているのですが、 最初にgyo1の値が「A2」となっても、次の繰り返し時、条件が一致したても、gyo1が更新されず、「A2」のままだったりします。 (イメージでは、「A10」とか、A列を下に移動していくはずです。) また、gyo1,gyo2の変数宣言は、どのようにすれば良いでしょうか。 以下、作成中のコードを記述します。 力を貸してくださいませ。よろしくお願いいたします。 row = 2 If Cells(row, 1) <> Cells(row - 1, 1) Then gyo1= Selection.Address(Cells(row, 1)) End If If Cells(row, 2) <> Cells(row - 1, 2) Then gyo2 = Selection.Address(Cells(row, 2)) End If Cells(row,5).value = countif(gyo1:gyo2)

  • EXCEL VBA 結合したセルの制御

    いつもお世話になっております。 Excelで、VBAを使っているのですが、結合されたセルの値を Cells(Row,Column).ClearContents を使ってクリアしようとするとエラーになってしまいます。 結合されたセルには、Cells()のメソッドは処理不能なのでしょうか? どなたかご存知の方がいらっしゃいましたら教えてください。

  • エクセル VBA セルのデータを見に行ったのですが・・・

    いつも皆様には大変お世話になっております。 エクセルVBAなのですが・・・ sa = ActiveCell.Row tu = ActiveCell.Column z = Cells(sa + 18, tu + 3).Text MsgBox z If z = "" Then sa = ActiveCell.Row tu = ActiveCell.Column Cells(sa + 18, tu + 3) = a Else sa = ActiveCell.Row tu = ActiveCell.Column Cells(sa + 32, tu + 3).End(xlUp).Offset(1, 0) = a と、入力したのですが z = Cells(sa + 18, tu + 3).Text この zのセルに文字が入っていても MsgBox z  をみても何も入っていないと表示されてしまいます。 何が原因かさっぱりわかりません;; 皆様よろしくお願いいたします

  • セルの値だけを貼り付けるマクロ:アクティブの1行下

     セルの値を  そのセルの1行上のセルの値と同じものにする。  ・・・というマクロを組んでいます。それに関して多くの方よりアドバイスを頂戴しました。 次のような数式で、ひとまず上手くいきました。 Cells(RR, 7) = Cells(RR - 1, 7).Value   (RRとは、アクティブになっているROWを、AS LONG として宣言したものです。) ■次に、「(RR,2) ・・・ すなわち、2列目のセルについては(G7)セルの値だけを貼り付けたかったので、・・・頂戴したアドバイスを元に、いろいろ試し・・・たのですが、うまくいきません。  具体的には、次のような数式をトライしました。  ↓ Range(RR, 2).Value = Range("G7").Value ・・・これで、ダメだったので、 Cells(RR, 2) = Cells("G7").value ・・・でも試しましたが、ダメでした。  このような場合は、どうしたらよいでしょうか?     アドバイスを、どうぞよろしくお願いいたします。 

  • エクセル VBAで入力フォームを作成し、そのフォームで検索をしようとF

    エクセル VBAで入力フォームを作成し、そのフォームで検索をしようとFindを使って動かしたのですが、一度表示したあと、再度別の値で検索しても最初に検索したデータが表示されてしまいます。 色々調べましたが、全く分からずこちらに質問しました。VBAは全くの初心者で本やHPを見ながら作っています。勉強不足なのは承知しております。どなたかご親切な方のご指導をお待ちしています。 顧客名   ・・・・・・・・・・・ 店舗名   ・・・・・・・・・・・ 略称    ・・・・・  ←ここに入力して検索をクリックします。 ・ ・ Private Sub 検索_Click() Dim w As Variant Dim r As Range ActiveSheet.Unprotect w = 略称.Value If w = "" Then Exit Sub Set r = Cells.Find(What:=w, After:=ActiveCell, LookIn:=xlValues, LookAt:= _ xlPart, SearchOrder:=xlByRows, MatchCase:=False _ , MatchByte:=False, SearchFormat:=False) If TypeName(r) = "Range" Then 略称.Value = Cells(ActiveCell.Row, 2).Value 顧客名.Value = Cells(ActiveCell.Row, 3).Value 店舗名.Value = Cells(ActiveCell.Row, 4).Value 締日.Value = Cells(ActiveCell.Row, 5).Value 売単価.Value = Cells(ActiveCell.Row, 6).Value サイクル.Value = Cells(ActiveCell.Row, 7).Value 郵便番号.Value = Cells(ActiveCell.Row, 8).Value 住所.Value = Cells(ActiveCell.Row, 9).Value 電話番号.Value = Cells(ActiveCell.Row, 10).Value FAX.Value = Cells(ActiveCell.Row, 11).Value 担当者.Value = Cells(ActiveCell.Row, 12).Value End If ActiveSheet.Protect End Sub

  • Excelのマクロを使ってコメントを表示させる

    マクロを使ってセルにコメントを挿入したいのですが、どうしてもエラーが出て先に進めません。 エラー内容 実行時エラー:438 オブジェクトは、このプロパティまたはメソッドをサポートしていません。 【Excel2007 SP1】を使っています。 マクロに詳しい方、ご教授よろしくお願いします。

  • セルの値が「#VALUE!」の場合 vba

    セルの値が「#VALUE!」の場合、 VBAで If Cells(lastRow, Col_本体価格) = Empty Then とすると、 「実行時エラー 13 型が一致しません。」 となります。 セルの値が「#VALUE!」の場合でも、 VBAでifステートメントを使えるようにするには どうすればいいですか?

  • [ExcelVBA] objExcel.Sheetsのような感じで、objExcelのマクロを作動させたい

    objExcelにオブジェクトがある状態で、 objExcel.Sheets(1).cells(1,1) でセルの情報が取得できます。 これと同じような感じで、マクロを作動させることはできるのでしょうか? objExcel.Module1.マクロ名 を実行しても、 エラー'438' オブジェクトは、このプロパティまたはメソッドをサポートしていません。 となってしまいます。 取得済みのオブジェクトのマクロを作動させられれば どのような方法でもいいのですが。アドバイスいただけたら幸いです。

  • Excel VBAで「セルが選択されたら…」

    任意の列のセルが選択されたら、マクロを実行したいんですが、どのようにしたらいいのでしょうか? 「セルを変更したら…」っていうのはわかるんですが。。 Private Sub ***() Dim i As Integer i = ActiveCell.Row ***の部分がわかりません。 よろしくお願いします。

専門家に質問してみよう