• ベストアンサー

別のシートから値を取得するとき

Worksheets("シート名").Activate 上記のを行ってから別シートの値を取得するのですが、 この処理を行うと指定したシートへ強制的にとんでしまいます。。。 ※イメージ For ~ To ~   Worksheets("シートA").Activate   シートAの値取得        :   Worksheets("シートB").Activate   シートBの値取得 Next このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。 シートを変えずに他のシートから値を取得する方法はないのでしょうか。 教えてください!

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

  • ベストアンサー
  • KG_
  • ベストアンサー率62% (34/54)
回答No.2

Worksheets("シートA").Range("A1") みたいな感じでできませんか?

sin-da4
質問者

お礼

できました! とても簡単なことでしたね^^; ありがとうございました!

その他の回答 (2)

回答No.3

Activate しなければいいのでは? Dim Value1, Value2 Value1 = ThisWorkbook.Worksheets("シートA").Cells(1, 1).Value Value2 = ThisWorkbook.Worksheets("シートB").Cells(1, 1).Value とか。 セル番地の書き方を ThisWorkbook からフルで書けば、複数のブックが開いている状態でも VBA 実行中のブックの特定のシートの特定のセルに直接アクセスできます。 面倒なら Dim SheetA As Worksheet, SheetB As Worksheet Set SheetA = ThisWorkbook.Worksheets("シートA") Set SheetB = ThisWorkbook.Worksheets("シートB") Dim Value1, Value2 For ~ Value1 = SheetA.Cells(1, 1).Value Value2 = SheetB.Cells(1, 1).Value Next とか

  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.1

処理の直前(forの前)に Application.ScreenUpdating = False 処理の直後(nextの後)に Application.ScreenUpdating = True を入れてみたら、どうなりますか?

関連するQ&A

  • エクセルで別シートの値を取得したいです。

    エクセルで質問があります。 別シートからセル値を取得したいです。 ただ、セル番地は行番号、列番号で指定し、 行、列番号はセルに入力してある値を使いたいです。 例 Aシート(値格納シート) B1セル値=1000 -------------- Bシート(値取得シート) A列=行番号入力 B列=列番号入力 C列=Aシートの取得関数 A2セル値=1 B2セル値=2 C2セル=1000(取得値) C2セルの関数に、A2とB2の値を使って Aシートのセル値を取得したいです。 よろしくお願いします。

  • Excel マクロ 値の転記

    Excel マクロ 値の転記 Sheet2をSheet1に転記したいのですが、A列だけは3回同じ値を転記 するのには、※をどのように変えたらいいのでしょうか? 宜しくお願い致します。 〔Sheet1〕転記先 A  B あ  10 あ  20 あ  30 い  40 い  50 〔Sheet2〕転記元 A  B あ  10 い  20 う  30 え  40 お  50 Sub テスト() Dim i As Long For i = 1 To 30    '↓※ココをどう書いて良いのかが分かりません Worksheets("Sheet1").Cells(i, "A") = Worksheets("Sheet2").Cells(i, "A") Worksheets("Sheet1").Cells(i, "B") = Worksheets("Sheet2").Cells(i, "B") Next i End Sub

  • マクロで別シートの検索と別シートへの転記

    windows7、エクセル2013です。 Sheet1のA列の値を上から順に、Sheet2のA列内を検索し 同じ値が有ればその値を Sheet3のB列の5行目から順番に転記したいです。 Findを使ってうまくできないので Countifを使いましたが、駄目でした。 関数で可能なら関数でもいいのですが、教えていただきたいです。 よろしくお願いします。 Sub 抽出転記() Dim 検索行 Dim 検索値 Dim 答 Dim 入力行 入力行 = 5 For 検索行 = 3 To 200 検査値 = Worksheets("Sheet1").Cells(検索行, 1) If Worksheets("Sheet2").Columns("A").CountIf(検索値) <> 0 Then 答 = 検索値 Worksheets("Sheet3").Cells(入力行, 2) = 答 入力行 = 入力行 + 1 End If Next 検索行 End Sub

  • 【マクロ】特定シートから値を抽出し、別シートへ反映して印刷

    【マクロ】特定シートから値を抽出し、別シートへ反映して印刷 このようなマクロを組みたいです。 作成しましたがうまく動きません。 どなたか修正していただけませんか? 【やりたいこと】 シート名1『データベース』 シート名2『通知書』 (1)『データベース』  4行目からデータベースが作成された表  C列は社員番号の列 ↓ (2)『データベース』シートのA列に『1』のフラグを立てる ↓ (3)『通知書』のセルB1に自動的に(2)で立てた行のC列の社員番号が反映され  同時に通知書シートを印刷をする。 【組んでみたマクロ】 Dim i As Integer 'カウント用変数 Dim lastrow As Integer '最終行が入る変数 i = 4 '最初に始まる行数を指定 lastrow = ActiveSheet.Range("A65536").End(xlUp).Row '最終行を取得する For i = 4 To lastrow '最終行まで繰り返す If Worksheets("データベース").Range("A" & i & "") = 1 Then 'A列に「1」があったものは以下の処理をする '別シートの特定セルを取得する Worksheets("通知書").Range("B1") = "=INDIRECT(""データベース!""&""C" & i & """)" '社員番号 '印刷する Sheets("通知書").PrintOut Else 'A列に「1」がなかったら以下の処理をする End If 'A列に何かあるかの判別終了 Next i '繰り返しの終わり。i(カウント用変数)に1を足す End Sub

  • 初心者です。VBでセルの値を違うシートに連続コピーする方法を教えてください

    ・A、Bシートが有りBシートのV17からAU17迄数値が入っています。この値をAシートのL6からV6、L10からV10、S14からAU17へ一個づつコピーしたいのですが、以下の様な式しか私には出来ません。 Sheets("B").Activate Range("v17").Copy Sheets("A").Activate Worksheets("A").Range("L6").Select Selection.PasteSpecial Paste:=xlValues ・For文とかで繰り返しできる方法を教えて下さい。宜しく御願いします。

  • エクセル VBA シート名を別シートにコピー

    早速の質問ですが エクセルVBAで シート名を別シートにコピーなのですが 10個のシートを順にシート名をコピー&ペーストしたいのです。 Dim aworkbook As Workbook Dim bworkbook As Workbook Set bworkbook = ActiveWorkbook Workbooks.Add Set aworkbook = ActiveWorkbook for i=1 to 10 bworkbook.Activate Worksheets(i).Select Application.CutCopyMode = False aworkbook.Activate Worksheets(i).Select ここに入る文章がわかりません Range("A1").Select next と以上な感じで作ってみたのですが どう貼り付けして良いかわからない状況です nextでまわす以上変数でなければだめなんでしょうけれども 構文が思いつきません。 皆様よろしくお願いいたします。

  • 別シートにあるその月の最大値を取得したい。

    次のような処理を考えています。   A    B     (シート1) 2001/1/1 10000 2001/1/2 13000   :   : 2001/1/31 25000 2001/2/1 28000   :   : B列は累計値です。(つまり、月末日がその月の最大値です。) ここで、シート2からシート1の毎月末の値を取得したいと思っています。 以下は例です。   A   B   C 2001年  1月   2月  ・・・   (シート2) 最大値 25000  ??? つまり、A1の年とB1の月と合致するシート1の月末日の値を、B2に取得 したいのです。(この例では2001/1/31の値が取得したい。) VLOOKUPとMAXを組み合わせてなんとか、と思いましたが、いい方法が 思い浮かびません。何か方法はあるでしょうか? (ワークシート関数だけで解決できるでしょうか?)

  • ExcelVBA シート間のコピー時に値の足し算

    よろしくお願いします。 Excel2003 VBAで異なるシート間でセルのコピーをしています。 ある条件の時だけコピー先のセルに値を足し込みたいのですがうまくいきません。 以下、1部抜き出しで申し訳ありませんが問題のコードを記載します。 各配列にはコピー元シートのセル列数(C_Arr)とコピー先シートのセル行数(B_Arr)・列数(A_Arr)を指定してあります。 For y = 1 To UBound(B_Arr) For x = 1 To UBound(A_Arr) If A_Arr(x) = 22 Then Worksheets("A").Range(Cells(y + 2, C_Arr(x - 1)), Cells(y + 2, C_Arr(x - 1) + 1)).Copy Worksheets("B").Cells(B_Arr(y - 1), A_Arr(x - 1)).PasteSpecial Paste:=xlValues, Operation:=xlAdd Application.CutCopyMode = False Else Worksheets("A").Range(Cells(y + 2, C_Arr(x - 1)), Cells(y + 2, C_Arr(x - 1) + 1)).Copy _ Destination:=Worksheets("B").Cells(B_Arr(y - 1), A_Arr(x - 1)) End If Next x Next y コードを実行するとエラーにはならないのですが、値が足し込まれず最後のコピー値が上書きされる 結果となります。 うまくいく方法を教えて下さい。

  • エクセルVBAでSheet1.ActivateとSheet(n).Activate

    エクセル2000です。 VBAでの疑問点を教えてください。 Sub test1() Sheet1.Activate MsgBox ActiveSheet.Name End Sub これは問題なく作動します。 Sub test2() x = ThisWorkbook.Worksheets.Count For n = 1 To x Sheet(n).Activate MsgBox ActiveSheet.Name Next End Sub これは「SubまたはFunctionがていぎされていません」というエラーになります。 もちろん、 Sub test3() x = ThisWorkbook.Worksheets.Count For n = 1 To x Sheets(n).Activate MsgBox ActiveSheet.Name Next End Sub のように書けばOKなのは存じておりますが、これではSheet名に係らず、左から順番となってしまいます。 Sub test4() x = ThisWorkbook.Worksheets.Count For n = 1 To x Sheets("Sheet" & n).Activate MsgBox ActiveSheet.Name Next End Sub のように明確にシート名として記述すればOKなのですが、それでは、Test1のSheet1.Activate が通って、Sheet(n).Activate が通らないのはなぜでしょう? しょうもない質問でごめんさない。

  • 複数のシートの値を一つのシートに整列

    よろしくお願いします。 複数のシートに行も列もバラバラになっているデータを一つのシートの行に整列させたいと思っています。 具体的には下記のようなシートがあります。一つは組織の名前のシート、一つは組織の基礎情報といった感じでシートごとに回答されています。 これを他のシートに一つの組織を一つの行で整列させ分析をしていきたいと思っています。 ファイルが数千あるため、マクロで書こうと思っているのですが、下記のように書いたのですがうまくいきません。 アドバイスをいただけないでしょうか? ファイルは(アンケートデータ1,アンケートデータ2といった感じで統一、作業フォルダ内にすべて保存) マクロを動かすセルは”統合”というファイル名、シート1に持ってきます。 Sub Macro1() Dim i As Integer For i = 1 To 1000 'アンケートデータファイルを開く Workbooks.Open Filename:="C:\Documents and Settings\Administrator\My Documents\作業\アンケートデータ" & i" .xls 'アンケートデータファイル 学校名シートのB11 を新しいブックのシート1のA1にコピー Worksheets(学校名).Activate Range("B11").Select Worksheets(統合).Activate ActiveSheet.Paste ThisWorkbook.Worksheets(1).Range("A" & i).PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, SkipBlanks:=False, Transpose:=True Worksheets(基本データ).Activate Range("D3").Select Worksheets(統合).Activate ActiveSheet.Paste ThisWorkbook.Worksheets(1).Range("B" & i).PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, SkipBlanks:=False, Transpose:=True Worksheets(基本データ).Activate Range("D6").Select Worksheets(統合).Activate ActiveSheet.Paste ThisWorkbook.Worksheets(1).Range("C" & i).PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, SkipBlanks:=False, Transpose:=True 'アンケートデータファイルを閉じる ActiveWorkbook.Saved = True ActiveWorkbook.Close Next i End Sub 最終的には統合ファイル内で      A(学校名)         B(学校区分)    C(広さ)   D経営状況   E   F 1列  アイウエオ学校       3             500    黒字 2列    といった感じで学校数文行で並ぶようにしたいのです。 上記の式の間違いの指摘、書き方についてアドバイスをください。

専門家に質問してみよう