• 締切済み

変数の代入について

他のファイルを参照し変数に代入しましたが 参照式まで代入されてしまいますが、これを回避したいです。 ='C:\フォルダ名\[ファイル名.csv]シート名'!$A$1 理由としては、参照先を知られたくないためです。 Dim A(9) As Variant A(0) = Path & "!$A$1" 'ここの部分の書き方を教えてください。 .Range("B1").Value = A(0) 変数は入力ミスをした場合に元に戻すために使います。

みんなの回答

noname#157410
noname#157410
回答No.6

マクロの前後にApplication.ScreenUpdatingを入れれば表示の更新止めれるので ステータスバーにも数式バーにもばれたくないものは出ませんが。 これではだめなんですかね? Private Sub Test() Application.ScreenUpdating = False  'Screenの動作を止める ・・・・・・・ ・・・・・・・ Application.ScreenUpdating = True  'Screenの動作を戻す End Sub

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.5

ちなみに数式バーに式が表示されなくてもメニューの編集→リンクの設定でどのファイルにリンクしてるのかが分かりますから「参照先を知られたくない」という条件はクリアできません。 またCSVを参照している場合には、起動時にデータの更新をする旨選択すると、更新が出来ないと表示されて参照先を開くことが出来ますので、結局参照先は知られてしまいます。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.4

参照式が見える見えない以前に >='C:\フォルダ名\[ファイル名.csv]シート名'!$A$1 マクロでこの式をただセルに放り込んでも,肝心のCSVの値を引っ張ってこさせる事は出来ません。 そのやり口で値を取ってこさせるためには,原則として「事前に」目的のCSVを「開いておく」必要があります。 で,どうせCSVを事前に開くのなら,わざわざ参照式形式にしないで,開いたCSVの所定の値を直接読み取って「変数」に代入してしまえばおわりです。 そのための「CSVを開く方法(CSVから値を読み出す方法)」は,回答1などで寄せられているアドバイスのURLも大変役に立ちますし,また application.screenupdating = false workbooks.open filename:="c:\test\test.csv" a(0) = workbooks("test.csv").worksheets(1).range("A1").value workbooks("test.csv").close savechanges:=false application.screenupdating = true などのようにふつーに操作するのも簡単な方法です。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.3

変数 Path に ='C:\フォルダ名\[ファイル名.csv]シート名' を入れたいって事でしょうか > 理由としては、参照先を知られたくないためです どの時点で知られたくないのか分かりませんが どちらにしても参照先が分からないような参照は出来ないと思いますが… あと、セルに式を入れるのでしたら Range("B1").Formula = A(0) がよろしいと思われます。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.2

数式を隠したのならば、VBAで行わなくても次の方法は如何でしょうか。 (1)該当セルを選択→セルの書式設定→保護タブ→表示しないを選択、シート保護 (2)エクセルのグレードが不明ですので「シート保護」操作はキーワードで検索して下さい。

noname#157410
noname#157410
回答No.1

やりたいことってこんなこと? http://www.moug.net/tech/exvba/0060086.htm ちょっと文章じゃイメージがわかないのですが。。??

pQ5R91sn
質問者

補足

エクセルの数式バーに参照式が表示されてしまいます。 これは、必要ないので変数に代入しないで参照先にあるセルに表示されているデータのみを変数に代入したいのです。 質問の仕方が下手でした。ごめんなさい。

関連するQ&A

  • 変数の宣言について

    VB2008を使用しています。 Excel内の文字をTextBoxに表示させているのですが、Excelのセル名を変数を使用して表示したいのですが上手くいきません。 TextBox1.Text = sheet.Range("A1").Value は正常に作動 TextBox1.Text = sheet.Range("A"&"1").Value も正常に作動 そこで、Aを変数にしようと考えたのですが、 Dim COLUMN As String Dim A As String COLUMN = A TextBox1.Text = syokuin.Range("COLUMN" & "1").Value としたところエラーになってしまいます。 解決策をご存知の方みえましたらよろしくお願いいたします。

  • エクセルVBA 変数への代入がうまくできない

    エクセルVBA 変数への代入がうまくできない かなり初心者です。。。 選択範囲を変数に記憶したいのですがうまくいきません。 メソッドが対応していないとエラーになります。。。 stRng2に"A1:A8”のような範囲のデータを記憶したいのです。 dim stRng2 as Range stRng2 = wkb.Worksheets(stSheet1).Selection.Address(ColumnAbsolute:=False, RowAbsolute:=False) すいませんが、どなたか教えてください。

  • Excelマクロ:変数でセル範囲指定

    マクロの迷い人です。 Excelの表をマクロで印刷しようと思っています。 行の数が毎回違うため、最終セルもその都度指定しなければなりません。 A1 B1 A2 B2 A3 B3 A4 B4 この例で、A5 B5 以降は空セルとします。 印刷範囲を Range("A1:B4")と書かずに、そのときどきのアクティブセルを変数に代入し、変数を使って範囲指定したいのです。 Sub MacroTest () Dim a As Variant Dim b As Variant Range("B1").Activate Do While a <> 0 ActiveCell.Offset(1, 0).Activate '空白でなければ一つ下に移る a = ActiveCell.Value Loop ActiveCell.Offset(-1, 0).Activate '上の行に移る b = ActiveCell.Value Range("A1:"& b).Select End Sub こうしてみましたがダメでした。 デバッグの方法がわからないので教えて下さい。よろしくお願いします。

  • VBA 変数代入とループ処理について

    エクセルにてループ処理をしたいと考えています。 sheet1には連番が振ってあるデータが格納してあります。 sheet2にはsheet1の連番をB1に入力すれば必要なデータだけが出るようにvlookupで表示されるようにしてあります。 sheet3にはフォーマットが作ってあり、sheet2で表示されたデータがsheet3の対応した場所にデータが入るように作ってあります。 sheet2のA1に5 A2に20と入力したら連番5から20までsheet3が印刷するVBAを組みたいです。 変数の代入が間違っていると思うのですが、何が間違っているのか わからないので、質問しました。 以下にためしで組んでみたものがありますので、ご教授お願いします。 Dim temp1 Dim temp2 Dim temp3 Sheets("sheet2").Select temp1 = Range(A1).Value temp2 = Range(A2).Value temp3 = temp2 - temp1 While temp3   Sheets("sheet2").Select   Range(B1).Value = temp1 Sheets("sheet3").Select ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True   temp1 + 1   Wend 初歩的なミスをしていると思うのですが、よろしくお願いします。

  • セルのパスが読み取らない

    Excel一覧表をマクロで作成しています。 色々探して見つけたマクロを少し改良しようと思いましたが 初心者なのでなかなか思いどおりに行きません(T~T) すみませんがアドバイスをお願いします。 ~環境~ win XP Excel2000 です。 ~内容~ セル上のフルパス(B,1)を指示をし条件を付け フォルダーを選択(2コまで)と言ったマクロを 作成使用と思っています。  A  B  C  D  E 1   @パス 2     条件 3     フォルダー1 4     フォルダー2 5 6 以下記載 解らないところに"*"を付けています。 ~コード~ Sub ファイル名一覧() 'マクロ実行画面の凍結 Application.ScreenUpdating = False '変数宣言 Dim Path As String←*ここの部分追加しています。 Dim FileName As Variant '・・・ファイル名を格納 Dim FOLDER(2) As Variant Dim x As Integer '・・・FOLDER(x)とし検索するフォルダを更新する変数 Dim Gyou As Integer, LastGyou As Integer '・・・ファイル名を入力する行(増えるから変数) Dim 条件 As Variant 'パス格納 Path = Range("B2")←*ここの部分追加しています。 If Path = "" Then Exit Sub←*ここの部分追加しています。 '定数宣言 Const PAS As Variant = Path '・・・フォルダの場所 ↑*ここの部分が原因?"定数式必要です。"でます(T~T) Const Retu As Integer = 2 '・・・ファイル名を入力する列 '変数の初期値設定 x = 1 Gyou = 6 '・・・ファイル名を入力する開始行 FOLDER(1) = Range("D3") '・・・検索するフォルダ(1) FOLDER(2) = Range("D4") '・・・検索するフォルダ(2) '条件の格納 条件 = Cells(2, 4)   ~~以下省略~~ 長々と書いてしまい申し訳ございません。宜しくお願いします。

  • 超基本 変数への代入教えてください。

    dim mychr as string * 255 mychrという変数を255個宣言しているのは分かりますが、どうやって代入するかが分かりません。ちなみに mychr=vbnullstring '初期化 mychr="ABCDEFG" mychr="A" mychr(0)="A" 全部だめでした、本で調べるにも調べようがなく、ご教授お願いいたします。

  • 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.ワークシート関数で得た数値はすべて一度フォーマットする必要があるのでしょうか?    フォーマットしない良い方法はあるのでしょうか? ちなみにキーボードから入力した数値もちゃんと拾ってくれます。 詳しい原因がわからないのでよろしくお願いします。

  • VBAにて計算式をセルへ代入できなくて困っています

    計算式を変数QRdataへ代入し その変数から指定のセルへ入力するとき、実行時エラー1004となってしまい マクロを実行できずに困っています。 Cells(3, 6).ValueもRange("F3").Fourmulaと変えたりしたのですが解決方法が解らなく どうか御教授下さい。 Dim コードナンバー As String Dim 品名1行 As String Dim QRdata As String QRdata = "=("& Chr(34) & コードナンバー & 品名1行 & Chr(34) & ",1)" Cells(3, 6).Value = QRdata  ←ここでエラーとなってしまいます。

  • VBA セル範囲をVariant変数に代入

    Dim myVar As Variant myVar=Range("A1:A10") などのようにセル範囲を変数に一気に入力して使う際、myVarは2次元配列になる筈です。セル数が1個だけの時は、ひょっとしてただの変数つまり配列にならないのですか?確信ありませんが、そう思えるエラーがありました。 気のせいならこのまま粛々とエラー対策を続けます。本当だったら、データ数で変数の型が変わるので都合が悪いです。どう対策すればいいですか?

  • サブフォームに変数を代入し、RecordSourceの値を取得したい

    サブフォームに変数を代入し、RecordSourceの値を取得したいのですがうまくいきません。 Sub test1() Dim サブフォーム As String Dim フォーム As String フォーム= "土台" サブフォーム = "フォーム1" MsgBox Form_フォーム1.RecordSource End Sub ******************************************************************* Sub test2() Dim サブフォーム As String Dim フォーム As String フォーム= "土台" サブフォーム = "フォーム1" MsgBox Form_フォーム1.RecordSource MsgBox Forms(フォーム).Controls(サブフォーム).RecordSource End Sub オブジェクトは、このプロパティまたはメソッドをサポートしていません。(Error 438) ******************************************************************* Sub test3() Dim サブフォーム As String Dim フォーム As String フォーム = "土台" サブフォーム = "フォーム1" MsgBox Forms(サブフォーム).RecordSource End Sub 実行時エラー'2450' マクロの式またはVisual Basic コート゛で参照されている 'フォーム名'フォームが見つかりません。 ******************************************************************* test1~3のうち test1のみはうまくいくのですが 変数を代入したいです。 ヘルフ゜のには Forms![受注]![受注サブフォーム].Formとなってますが これじゃ変数を代入できないですよね。 どうすればサブフォームに変数を代入しつつ、RecordSourceの値を取得できるのでしょうか? よろしくお願いします。

専門家に質問してみよう