• ベストアンサー

vbsのセル値の取得について

Excelシートからセルに入力された値を取得するプログラムを作成しています。しかし、セルに計算式が記入されたいる場合のみ値を取得している以下の部分で型が一致しないというエラーが発生してしまいます。対処方法を知っている方がおりましたら教えてください。 ※計算式でなく文字列が入力されている場合は正常に取得できます。 Dim str ・・・ str=obj.Worksheets("AAA").Range("A1").Value

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

  • ベストアンサー
  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

str=obj.Worksheets("AAA").Range("A1") str=obj.Worksheets("AAA").Range("A1").Text とかではどうですか?

motikei
質問者

お礼

上記で実施した結果うまくいきました。ありがとうございます。

関連するQ&A

  • vbsのIsNumeric関数について

    Excelのセルから値を取得しその値が数値かどうかをチェックしているのですがうまくいきません。以下のプログラムで間違えがありましたらご指摘をお願いします。 Dim obj Dim str Set obj = CreateObject("Excel.Application") str = obj.Worksheets(sheetname).Range("A11").Value If IsNumeric(str) Then MsgBox("")

  • 結合セルの値取得について

    お世話になります、 (環境、VISTA&EXCEL2000) 結合セルに名前をつけて その値をマクロで取得したいのですが エラーになります。 結合セルには結合する前に名前をつけてから 結合してあります。 Dim ws As Worksheet ' On Error GoTo errTrap Set ws = Worksheets("xxxxx") '(1) ws.Range("DenDate").Value = Date '(2) MsgBox ws.Range("DenDate").Value (2)で「型が一致しません」になります。 宜しくお願いいたします。

  • セルの値でなくセルの関数を参照したい

    次のコードでセルI13の値を入力できましたが、 '---------------------- 'Dim i As Integer 'For i = 2 To Worksheets.Count - 6 'With Worksheets(i) '.Range("I13") = Worksheets(1).Range("I13").Value 'End With 'Next セルの値でなく関数を入力しようとして次のコードに修正したらエラーになりました。どこがいけないのでしょうか。 Dim i As Integer For i = 2 To Worksheets.Count - 6 With Worksheets(i) .Range("I13").Formula = "=" & Worksheets(1).Name & "!I13" End With Next

  • セルの値が欲しい

    セルに入力されている値を取得する方法といいますか理解が今だ出来ません エクセルの上記に入っている値*画像添付とセルに入力されている値が違う場合 セルに入力している値を取得したいのです、説明がわかりにくいかもしれませんので、情報が足らない際はおしゃってください、よろしくお願いします。 下記のコードでは画像に入っている値を取り出します。 Sub test() Dim ret As Range Dim piyo As Variant Application.ScreenUpdating = False Set ret = Range("M:M").Find(Application.Max(Range("M:M"))) piyo = ret.Offset(0, -1).Value MsgBox piyo END Sub

  • ExecuteExcel4Macroでセル値取得

    office2010 あるフォルダにファイルを入れて、ファイルを開かずに対象シートの対象セルの値を取得したいです。 この取得したいセル情報を、変数で指定したいのです。 C:\dataに取得元のファイルが入っています。 このファイル名((1))は、いろいろ変わりますが、中にH4という文字があります。 対象シートのシート名とセルアドレスは、別のファイル(これにマクロがあります) のsettingシートで指定します。 1例ですが、settingシートの B2に11_001 C2にAF9 と設定します。 (1)のファイルで11_001というシートのAF9セル値を取得したいのです。 Dim myPath As String Dim myFile As String myPath = "C:\data\" myFile = Dir(myPath & "*H4*.xlsm") Dim sheetname As String Dim cell As String sheetname = Worksheets("setting").Range("B2") cell = Worksheets("setting").Range("C2").Value ' 'Range("A1") = ExecuteExcel4Macro("'[" & myFile & "]" & sheetname & "'!R9C32") Range("A1") = ExecuteExcel4Macro("'[" & myFile & "]" & sheetname & "'!" & cell & "") 上記で、 Range("A1") = ExecuteExcel4Macro("'[" & myFile & "]" & sheetname & "'!R9C32") は、値取得できます。 このR9C32を変数にする所で、エラーが発生します。 実行時エラー1004と。 いろいろWEB見て、’,スペース等を入れてみましたが、どうしても分からず、 Range("A1") = ExecuteExcel4Macro("'[" & myFile & "]" & sheetname & "'!" & cell & "") の最後のセル指定を、変数で設定する方法を教えて頂きたく。

  • セルの高さの取得について

    エクセルで、セルの高さを取得についてですが、イミディエイト画面で、debug.print Worksheets("Sheet1").Range("A1:A3").Height とすると38.25と表示されます。"A1:A1900"とすると、24224.25となり"A1:A2000"で、24575.25となります。それ以後は、どんなにセル範囲広げても全て、24575.25の値しかかえって来ません。例えば、オートシェープで、A1:A30000の範囲を四角で囲もうとする場合、どのようにすればいいのでしょうか?24575.25の値だと途中までしか囲めません。(当然、ここのセルの高さがことなると数字も異なってきます) 宜しくお願い致します。

  • 外部linkのセル時間値が0.125 などで 

    外部linkの 時間値が 0.125 と言うデータです。 これに対して If Minute(Me.Range("$b$2").Value) / 5 = Int(Me.Range("$b$2").Value) / 5) これだと、変数の型が一致しない エラー13 となります。 Dim linkdate As Date linkdate = Me.Range("$b$2").Value If Minute(linkdate) / 5 = Int(linkdate) / 5) でも 同じエラーです。 LINKのセル表示は 普通の時間に変えてはあるのですが、持ってくる値は 0.125 などの数値になります。 ご教示いただけると助かります。よろしくどうぞ

  • = (イコール)で始まるセルの値を取得する方法について教えてください。

    = (イコール)で始まるセルの値を取得する方法について教えてください。 エクセルVBAでCSVファイルを取り込み(現状手でコピー)→mysqlに挿入というプログラムを実装しています。 その中で、CSVファイル(もしくはタブ区切りテキストファイル)の中に、+ (プラス記号)で始まるデータがありました。 エクセルで開いた場合、+が =+に変換されてしまい、#NAME? となってしまいました。 このセルに対してValueを取得すると、型が一致しません。のエラーが出ます。 取り込んだ時点でValueが取得できないため、値を変換しようにもできません。 もし、良い方法が思いつく方がいらっしゃれば教えていただけませんでしょうか。 以上、よろしくお願いいたします。

  • エクセルVBA 別シートの複数のセルの値をコピーする方法

    いつもお世話になります。 Dim sh1, sh2 As Worksheet Set sh1 = Worksheets("sheet1") Set sh2 = Worksheets("sheet2") sh1.Range("C6").Value = sh2.Range("F5").Value として、1つのセルの値ならコピーできるのですが、 sh1.Range("C6:C10").Value = sh2.Range("F5;F9").Value としても、セルの値を持ってくることができません。 どのように書けば良いのでしょうか? ちなみに今は、 sh2.Range("F5:F9").Copy sh1.Range("C5:C9").PasteSpecial Paste:=xlValues としているのですが、上記だとセルを範囲指定してしまって作業が見えるのでカッコ悪いのです。

  • マクロ。セルを空白にした時の処理

    セルをDeleteで空白にした時の処理について教えて下さい。 まず現在下記のようなマクロがあります。 Private Sub SubProc1(ByVal Target As Range) Dim str1 As String Dim str2 As String  On Error Resume Next  If Application.Intersect(Target, Range("B18")) Is Nothing Then Exit Sub  If Range("B18") = "" Then Exit Sub  Application.ScreenUpdating = False str1 = "T-POT #" str2 = " G1 G2 MEST計測を行いました。" Range("A7").Value = str1 & Range("B18") & str2 End Sub B18セルに数字や文字も入力するとA7セルにB18セルの入力内容を含めた 文字が表示されるのですが、B18セル内の文字をDeleteで削除しても A7セルは特に反応なしです。 やりたいことはB18セルから文字をDeleteで削除した場合 A7セルからもB18セルの入力内容を削除したいです。( str1、str2だけが残るイメージ) 宜しくお願いします。

専門家に質問してみよう