表示するSheetを変えるボタンを作っています。宜しくお願いします。

ファイル(1)のSheet1~Sheet5 と Sheet7 のそれぞれのシートにSheet6へ行くボタンを作っています。
「WorkSheets("Sheet6").Activate」でしています。
で、Sheet6には戻るボタンを作りたいのですが、どこのシートから来たのかを認識して、該当シートへ戻るようにしたいのですがどのようにしたらよいでしょうか?(シート6へ行くボタンを押したシートに戻る)

更に、同様の処理が、WorkBook間でも処理ができるようにしたいのです。
ここは、「WorkBooks(ファイル(2).Xls)WorkSheets(”Sheet1”).Activate」をファイル(1)の各シートに書いて処理させています。ここから戻るボタンの方法もお願いします。

宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (5件)

Public fukkiSheetNo As Integer '復帰するシート番号


を標準モジュールに書いていませんか?
以前の終了ボタンと同じで、ThisWorkbookのコードウインドウに貼り付けます。2つのブックの開き方も終了ボタンの時と同じです。終了ボタンがうまくいっていればこれも同じ理屈ですが・・・
    • good
    • 0
この回答へのお礼

すみませんでした!ファイル名をタイプしていました。本当にすみません!お恥かしい次第です。

ばっっっっりちOKです。

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

お礼日時:2001/06/18 22:57

移動Book1.xls(シート1~7)、移動Book2.xls で書きました。

ファイル名は変更してください。

'シート1~5、7にはボタン2個。各シートのコードウインドウに貼り付けます。
Private Sub cmdJump6_Click() 'シート6に行くボタン
Workbooks("移動Book1.xls").fukkiSheetNo = Right(Me.Name, 1)
Worksheets("Sheet6").Activate
End Sub

Private Sub cmdJumpBook2_Click() 'ブック2に行くボタン
Workbooks("移動Book1.xls").fukkiSheetNo = Right(Me.Name, 1)
Workbooks("移動Book2.xls").Worksheets("Sheet1").Activate
End Sub

'シート6はボタン1個。シートのコードウインドウに貼り付けます。
Private Sub cmdFukki_Click() '元のシートに復帰するボタン
Dim jmpNo As Integer '復帰するシート番号
jmpNo = Workbooks("移動Book1.xls").fukkiSheetNo
Worksheets("Sheet" & jmpNo).Activate
End Sub

'ThisWorkbookのコードウインドウに貼り付けます。これをBook2から参照する。
Public fukkiSheetNo As Integer '復帰するシート番号

'ブック2のシート1のコードウインドウに貼り付けます。
Private Sub cmdJumpBook1_Click()
Dim jmpNo As Integer '復帰するシート番号
jmpNo = Workbooks("移動Book1.xls").fukkiSheetNo
Workbooks("移動Book1.xls").Worksheets("Sheet" & jmpNo).Activate
End Sub

この回答への補足

ありがとうございます。

早速試してみましたが、
   Workbooks("移動Book1.xls").fukkiSheetNo = Right(Me.Name, 1)
でのところで止まります。

  ”オブジェクトは、このプロパティまたはメソッドをサポートしていません。”

と出ます。なぜでしょう????????

ファイル名は、自分のものに変えました。よろしくお願いします。

補足日時:2001/06/17 03:03
    • good
    • 0

>ファイル(1)のSheet1~Sheet5 と Sheet7 のそれぞれのシートにSheet6へ行くボタンを作っています。


>「WorkSheets("Sheet6").Activate」でしています。
>で、Sheet6には戻るボタンを作りたいのですが、どこのシートから来たのかを認識して、該当シートへ戻るように
>したいのですがどのようにしたらよいでしょうか?(シート6へ行くボタンを押したシートに戻る)

考え方だけ説明の為に書きましたので、きたない書き方になってます。

■Sheet1(シート6に移動する)

Private Sub CommandButton1_Click()

Sheets("Sheet6").Select
Sheets("Sheet6").Cells(1, 1).Value = "Sheet1" ←実際にはCells(1, 1)にワークの情報を書いたら邪魔
                             になるので、邪魔にならない場所に書く

End Sub



■Sheet2(シート6に移動する)

Private Sub CommandButton1_Click()

Sheets("Sheet6").Select
Sheets("Sheet6").Cells(1, 1).Value = "Sheet2" ←実際にはCells(1, 1)にワークの情報を書いたら邪魔
                             になるので、邪魔にならない場所に書く

End Sub

■Sheet3~5も同様

■Sheet6 (呼ばれたシートに戻る所)

Private Sub CommandButton1_Click()

Sheets(Cells(1, 1).Value).Select

End Sub

>更に、同様の処理が、WorkBook間でも処理ができるようにしたいのです。
>ここは、「WorkBooks(ファイル(2).Xls)WorkSheets(”Sheet1”).Activate」をファイル(1)の各シート
>に書いて処理させています。ここから戻るボタンの方法もお願いします。

上記と同じ考え方で、ファイル名のセルを追加します。
試しに、確認用のマクロを書いて見たら1回目はうまく動きましたが、2回目以降は、既に開いているEXCELシート
をまた、開きに行くので確認メッセージが出てしまいました。(出さない為の指定方法とか有るかもしれないが調べていません、分からないようでした質問してください。その時調べます。)
この問題は、別問題なので取りあえず参考にして下さい。

この回答への補足

ありがとうございます。うまくいきました。
>2回目以降は、既に開いているEXCELシートをまた、開きに行くので確認メッセージが出てしまいました。
については、もう少しじっくり考えてみます。

補足日時:2001/06/17 02:54
    • good
    • 0

こんにちは



 以下のページがご参考になるのでは?

【エクセル技道場】-ツールバー-マクロでツールバー作成
http://www2.odn.ne.jp/excel/waza/toolbar.html#SE …

参考URL:http://www2.odn.ne.jp/excel/waza/toolbar.html#SE …
    • good
    • 0

移動先のシートの見えないセルに、どこから呼ばれたか書いておいたらどうでしょうか?(WorkBook名とシート名)

この回答への補足

すみません!まだまだ初心者なので、どこからどうしたら呼ばれたかを書く方法が分かりません。よろしかったら、詳しくお願いできませんか?

補足日時:2001/06/15 20:53
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qマクロ 戻るボタンを押したらシートの1枚目に戻る

各シートに「戻る」というボタンを作りましたが、
「戻るボタンを押したらシートの1枚目をアクティブにする」というマクロを付けたいです。
下記は、『「戻る」というマクロを2枚目のシート以降すべてに付ける』というマクロです。
このマクロの中に、各シートの「戻る」ボタンを押せば、シートの1枚目に戻るような
指示を入れたいです。
分かる方いましたら、お願いします。。。

※下記のマクロは以前ご回答いただいたマクロを引用したものです。

///////////////////////////////////

Sub 戻るボタン設置()

Dim Sht As Worksheet
For Each Sht In Worksheets
If Not Sht.Name = Worksheets(1).Name Then
With Sht
For i = 1 To 1
'幅140、高さ20のボタンを追加
.Buttons.Add(900 * i, 10, 140, 20).Text = "戻る"
Next i
End With
End If
Next Sht
Sheets(1).Select
End Sub

各シートに「戻る」というボタンを作りましたが、
「戻るボタンを押したらシートの1枚目をアクティブにする」というマクロを付けたいです。
下記は、『「戻る」というマクロを2枚目のシート以降すべてに付ける』というマクロです。
このマクロの中に、各シートの「戻る」ボタンを押せば、シートの1枚目に戻るような
指示を入れたいです。
分かる方いましたら、お願いします。。。

※下記のマクロは以前ご回答いただいたマクロを引用したものです。

///////////////////////////////////

Sub 戻る...続きを読む

Aベストアンサー

一例です。


Sub 戻るボタン設置()
Dim Sht As Worksheet, i As Long

For Each Sht In Worksheets
If Not Sht.Name = Worksheets(1).Name Then
With Sht
For i = 1 To 1
'幅140、高さ20のボタンを追加
.Buttons.Add(900 * i, 10, 140, 20).Text = "戻る"

'マクロ登録
.Buttons(1).OnAction = "シート移動"

Next i
End With
End If
Next Sht
Sheets(1).Select
End Sub

Sub シート移動()
' If ActiveSheet.Name = Worksheets(1).Name Then Exit Sub
Worksheets(1).Select
End Sub

Qエクセルで複数の条件を抽出し自動的に別シートに反映する方法を教えてください。

こんばんは。教えてください。

元データ(sheet1)を更新するたび
2つの条件にあったデータを
別シートに自動的に抽出したいので
適した関数がありましたら教えてください。



◇シート1◇ ※元データ
 A      B     C     D     F
1 氏名 役職 部署 年齢 移動時期     
2 山田 社員 開発 45  未調整
3 田中 社員 人事 42  4/1~
4 鈴木 派遣 企画 30  
5 高橋 役員 人事 50  未調整
6 坂野 社員 企画 33  未調整  
7 井上 派遣 企画 29  未調整

◇シート2◇ ※部署が人事で移動時期が未調整の人のみ抽出
 A      B     C     D    F
1 氏名 役職 部署 年齢 移動時期 
2 高橋 役員 人事 50  未調整


補足
・元データ(シート1)はこれからもデータを追加するので
 その度、シート2、シート3もそれぞれ自動で反映されるようにした いです。

・マクロ、VBAは知識がないので
 関数で作成したいです。

・できるだけエラー(#N/Aなど)表示されないようにしたいです。

説明が不十分で伝わりにくいかと思いますが
よろしくお願いします。

こんばんは。教えてください。

元データ(sheet1)を更新するたび
2つの条件にあったデータを
別シートに自動的に抽出したいので
適した関数がありましたら教えてください。



◇シート1◇ ※元データ
 A      B     C     D     F
1 氏名 役職 部署 年齢 移動時期     
2 山田 社員 開発 45  未調整
3 田中 社員 人事 42  4/1~
4 鈴木 派遣 企画 30  
5 高橋 役員 人事 50  未調整
6 坂野 社員 企画 33  未調整  
7 ...続きを読む

Aベストアンサー

> 部署を"人事"と"企画"の両方で抽出する条件を追加する

おはようございます、merlionXXです。
Operator:=xlOr, Criteria2:="=企画" と、OR条件で"企画"を加えれば可能です。
一応、各コードの動きに解説もつけておきました。(解説は’でコメントアウトしてますのでこのまま貼り付けてもOKです。)

Private Sub Worksheet_Activate() 'このシートがアクティブになったら自動実行
With Sheets("Sheet1") 'Sheet1対して
.AutoFilterMode = False 'オートフィルタ終了(あればエラーになるため)
.Range("A1:E1").AutoFilter 'A1:E1にオートフィルタ設定
.Range("A1:E1").AutoFilter Field:=3, Criteria1:="=人事", Operator:=xlOr, Criteria2:="=企画" '左から3つ目のフィルタを"人事"と"企画"のOR条件で抽出
.Range("A1:E1").AutoFilter Field:=5, Criteria1:="未調整" '左から5つ目のフィルタを"未調整"で抽出
.Range(.Range("A1"), .Range("A1").SpecialCells(xlLastCell)).SpecialCells(xlCellTypeVisible).Copy Range("A1") 'A1から最終セル範囲の可視セルをこのシートのA1以降に貼り付け
.AutoFilterMode = False 'オートフィルタ終了
End With 'Sheet1に対する記述おわり
End Sub

> 部署を"人事"と"企画"の両方で抽出する条件を追加する

おはようございます、merlionXXです。
Operator:=xlOr, Criteria2:="=企画" と、OR条件で"企画"を加えれば可能です。
一応、各コードの動きに解説もつけておきました。(解説は’でコメントアウトしてますのでこのまま貼り付けてもOKです。)

Private Sub Worksheet_Activate() 'このシートがアクティブになったら自動実行
With Sheets("Sheet1") 'Sheet1対して
.AutoFilterMode = False 'オートフィルタ終了(あればエラーになるた...続きを読む

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

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

Worksheets("シート名").Activate
上記のを行ってから別シートの値を取得するのですが、
この処理を行うと指定したシートへ強制的にとんでしまいます。。。

※イメージ
For ~ To ~
  Worksheets("シートA").Activate
  シートAの値取得
       :
  Worksheets("シートB").Activate
  シートBの値取得
Next

このイメージ処理を行うとものすごい勢いで画面がチカチカします。。。
シートを変えずに他のシートから値を取得する方法はないのでしょうか。
教えてください!

Aベストアンサー

Worksheets("シートA").Range("A1")

みたいな感じでできませんか?

QVBAで条件が一致する行のデータを別シートに抽出

"Sheet1"のA列に区分(文字列)、B列~D列に分析数値があり
A列の文字が条件に一致した行のデータを"Sheet2"にコピー、
元の"Sheet1"のデータは行ごと削除といった形で考えているのですが、どうも上手くいきません。

Dim Keywrd As String
???
With Worksheets("Sheet1").Columns("A:A")
Set Keywrd = .Find("キーワード", LookIn:=xlValues)
???
End With
Set Keywrd = Nothing
TargetCell.EntireRow.Select
Selection.Delete Shift:=xlUp
End Sub


???部分の変数宣言と処理内容をどうすれば良いか、ご教授願えますでしょうか。

Aベストアンサー

こんばんは。

#1の回答者です。一度きりなら、こんな風に直してみたらよいと思います。質問のコードは、変数の流れがおかしくなっているようです。

Sub Macro1()
  Dim Keywrd As String
  Dim TargetCell As Range
  Keywrd = InputBox("キーワードを入れてください", "キーワード入力")
  If Keywrd = "" Then Exit Sub
  With Worksheets("Sheet1").Columns("A:A")
    Set TargetCell = .Find(Keywrd, LookAt:=xlWhole, LookIn:=xlValues)
    If TargetCell Is Nothing Then
      MsgBox Keywrd & " は見つかりません。"
      Exit Sub
    End If
  End With
  'Keywrd = "" ''不要
  TargetCell.EntireRow.Copy Worksheets("Sheet2").Range("A1")
  TargetCell.Delete Shift:=xlUp

End Sub

--------------------------------------
#1 のコードを考え直し修正しました。
私のコードは、必ず、検索値に対して複数、該当するものがあるという条件になっています。

---------------------------------------------
Sub TestFind2()
 Dim myKeyWord As String
 Dim FirstAdd As String
 Dim c As Range
 Dim ur As Range
 myKeyWord = Application.InputBox("検索文字を入れてください", "検索+移動", Type:=2)
 If myKeyWord = "" Or myKeyWord = "False" Then Exit Sub

 With Worksheets("Sheet1").Columns(1)
 .Cells(1).Select
 Set c = .Find( _
      What:=myKeyWord, _
      LookIn:=xlValues, _
      LookAt:=xlWhole, _
      MatchCase:=False, _
      MatchByte:=True)

  If Not c Is Nothing Then
     Set ur = c.EntireRow
     FirstAdd = c.Address
    Do
      Set ur = Union(c.EntireRow, ur)
      Set c = .FindNext(c)
    Loop Until (c Is Nothing) Or (FirstAdd = c.Address)
   End If
   ur.Copy Worksheets("Sheet2").Range("A1")
   ur.Delete Shift:=xlShiftUp
End With
   Set ur = Nothing
End Sub


 

こんばんは。

#1の回答者です。一度きりなら、こんな風に直してみたらよいと思います。質問のコードは、変数の流れがおかしくなっているようです。

Sub Macro1()
  Dim Keywrd As String
  Dim TargetCell As Range
  Keywrd = InputBox("キーワードを入れてください", "キーワード入力")
  If Keywrd = "" Then Exit Sub
  With Worksheets("Sheet1").Columns("A:A")
    Set TargetCell = .Find(Keywrd, LookAt:=xlWhole, LookIn:=xlValues)
    If TargetCell Is Nothing Then
...続きを読む

Qコピー後に値のみ貼り付け エクセル、VBAの記述について

マクロ初心者です。
エクセルで選択範囲を指定後コピーし、
自動的に別のシートの末尾に貼り付けられるようにしたのですが、
この内容のまま「貼り付け」を「値のみ貼り付け」に訂正する場合
どのように変更すればいいのか、教えてくださると嬉しいです。
宜しくお願いいたします。


Sub 選択範囲をコピー後、指定シートの末尾に貼り付け
Worksheets("sheet1").Activate
Range("b11:I17").Copy
Workbooks("book2.xls").Worksheets("Sheet1").Activate
行 = Range("B1").CurrentRegion.Rows.Count + 1
ActiveSheet.Paste _
Destination:=Workbooks("book2.xls").Worksheets("Sheet1").Range("B" & 行)
End Sub

Aベストアンサー

こんにちは。

以下のように、Copy した後、PasteSpecial メソッドは、Destination を先頭にして書きます。


ActiveSheet.Paste _
Destination:=Workbooks("book2.xls").Worksheets("Sheet1").Range("B" & 行)



Worksheets("Sheet1").Range("B" & 行).PasteSpecial Paste:=xlPasteValues

他の方法もありますが、この方法を覚えておくと便利です。

なお、コピー範囲の点線は、

Application.CutCopyMode = False 'True でも同じ

で消えます。慣れれば、別の方法もあるのですが、まず、この方法を習得してください。

Qエクセルマクロで変数を使ったセル範囲指定

Dim x As Long
Dim y As Long
として

x = Range("A1").End(xlDown).Row
For y = 1 To x
としました。

このときRange("A" & y)からRange("A" & x)を範囲指定したいときは
どのように記述すればよいのでしょうか?

Aベストアンサー

次のようにすればよいでしょう。

Sub セルの範囲指定()
Dim x As Long
Dim y As Long
x = Range("a1").End(xlDown).Row
For y = 1 To x
Range(Range("A" & y), Range("A" & x)).Select
Next
End Sub

Q複数条件が一致で別シートに転記【エクセルVBA】

エクセルでセルの条件が複数一致したら別シートに転記される方法をお教えください。
シートを2枚用意して、配達日ごとに一覧化したいのです。
事前に用意したシート(配達表)の“配達”と“配達時間”が一致したら
その方の名前と注文個数を右側に反映したいのですが・・・

注文データが多すぎて困っています。
宜しくお願いします。

■シート名:注文データ
   A    B    C    D    E
------------------------------------------------
1 しめい  対応   配達日   時間   個数
------------------------------------------------
2 たけだ  配達  6/20(月) 13:00  2個
3 みうら  配達  6/18(土) 14:00  4個
4 らもす  郵送  6/20(月)  ―   5個
5 いはら  配達  6/20(月) 14:30  8個
6 かつや  配達  6/20(月) 15:00  6個
7 みうら  郵送  6/20(月)  ―   4個

■シート名:配達表
    A     B    C
------------------------------------
1  配達   6/20(月)
------------------------------------
2  12:00
3  12:30
4  13:00
5  13:30
6  14:30
7  15:00
8  15:30
9  16:00

マクロを実行すると・・・
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

■シート名:配達表
    A     B    C
------------------------------------
1  配達   6/20(月)
------------------------------------
2  12:00 
3  12:30
4  13:00    たけだ   2個
5  13:30
6  14:00    みうら   4個
6  14:30   いはら   8個
7  15:00   かつや   6個
8  15:30
9  16:00

エクセルでセルの条件が複数一致したら別シートに転記される方法をお教えください。
シートを2枚用意して、配達日ごとに一覧化したいのです。
事前に用意したシート(配達表)の“配達”と“配達時間”が一致したら
その方の名前と注文個数を右側に反映したいのですが・・・

注文データが多すぎて困っています。
宜しくお願いします。

■シート名:注文データ
   A    B    C    D    E
------------------------------------------------
1 しめい  対応   配達日   時間   個数
-...続きを読む

Aベストアンサー

こういうのは「複数条件による抜き出し問題」だ。
関数で出来ればおなじみのやり方で良いのだが、既に出ているように式が長く複雑で、初心者には何をやって居るかわからない式になる。毎度週に数回このタイプの質問が出て、同じようなタイプの答えになる。Googleででも「imogasi方式」で照会すれば、過去の沢山の例と回答(そのタイプも)が出てくる。
ーー
まず初心者や急ぐ場合はデーターフィルターフィルタオプションの設定で済ませられないか勉強すべきだ。
ーー
本来、こういう仕事の関連のエクセル表は、VBAを勉強してそれを使うべきと思う(既に回答も出ているようだ)
関数で抜き出し問題や表の組み換えは、VBAで無いと、天下りの長い式をコピペで使うだけになる。
ーー
私が紹介している「imogasi方式」では、Sheet2に時刻の所定の行に出す問題なので複雑になりすぎる。
ーー
VBAでやってみる。
例データ
しめい対応配達日時間個数
たけだ配達6月20日13:002個
みうら配達6月18日14:004個
らもす郵送6月20日ーー5個
いはら配達6月20日14:308個
かつや配達6月20日15:006個
みうら郵送6月20日ーー4個
(注意)
「ーー」セルは空白とする
「月日」列は、エクセルの年月日を入れておくこと(日付シリアル値(わかりますか)) 文字列では不可
6/20(月) の様な表示は、表示形式の設定でやること(エクセルの常識)  m/d(aaa)
時間の列も時刻シリアル値で入れてあるとする。文字列では不可
ーー
コード
標準モジュールに
Sub test01()
Dim sh1, sh2
Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")
d = sh1.Range("A65536").End(xlUp).Row
On Error Resume Next
For i = 2 To d
'--条件をかけて選別
If sh1.Cells(i, "B") = "配達" And sh1.Cells(i, "C") = sh2.Range("B1") And _
sh1.Cells(i, "D") <> "" Then
t = sh1.Cells(i, "D")
'---Sheet2で時刻行を探す
For r = 2 To 30
If sh1.Cells(i, "D") = sh2.Cells(r, "A") Then Exit For
Next r
'--該当行の値をSheet2の時刻該当行セット
Sheet2.Cells(r, "B") = sh1.Cells(i, "A")
Sheet2.Cells(r, "C") = sh1.Cells(i, "E")
End If
Next i
End Sub
ーー
実行結果
Sheet2
配達6月20日
12:00
12:30
13:00たけだ2個
13:30
14:00
14:30いはら8個
15:00かつや6個
15:30
16:00
・・・・・・

こういうのは「複数条件による抜き出し問題」だ。
関数で出来ればおなじみのやり方で良いのだが、既に出ているように式が長く複雑で、初心者には何をやって居るかわからない式になる。毎度週に数回このタイプの質問が出て、同じようなタイプの答えになる。Googleででも「imogasi方式」で照会すれば、過去の沢山の例と回答(そのタイプも)が出てくる。
ーー
まず初心者や急ぐ場合はデーターフィルターフィルタオプションの設定で済ませられないか勉強すべきだ。
ーー
本来、こういう仕事の関連のエクセル表...続きを読む

QエクセルVBA 複数の条件を含む対象を抜き出す。

エクセルVBAについて質問です。
エクセルのバージョンは2003と2007を主に使用しています。

下記の様なデータがあるときに、部活が「野球」でかつクラブは「囲碁」に入っている生徒の学籍番号を別のシート(Sheet2)のB3から下に順にリスト化するマクロがどうしても出来なくて困っています。
find next等を使うのでは無いかと色々してみましたが上手く出来ない現状です。

<sheet1>
   A      B      C       D    E

1 学籍番号 学年    名前     部活   クラブ
2 2222222   1   山田 太郎  野球   囲碁
3 9854923   2   吉田 次郎   剣道   絵画  
4 1111111   3   佐藤 三郎  野球   囲碁
5 8888883   1   米山 権蔵  卓球   囲碁

Aベストアンサー

こんばんは!
Sheet1のA列(学籍番号)のみをSheet2のB3セル以降に表示すれば良いわけですね?
一例です。

画面左下のSheet1のSheet見出し上で右クリック → コードの表示 → VBE画面に
↓のコードをコピー&ペーストしてマクロを実行してみてください。

Sub test()
Dim i, k As Long
Dim ws As Worksheet
Set ws = Worksheets(2)
k = 2
For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If Cells(i, 4) = "野球" And Cells(i, 5) = "囲碁" Then
k = k + 1
ws.Cells(k, 2) = Cells(i, 1)
End If
Next i
End Sub

こんな感じではどうでしょうか?m(_ _)m

Q'Range'メソッドは失敗しました

ExcelのVBAの質問になりますが、教えてください。
下記を動かすと最後の行で「'Range'メソッドは失敗しました: '_Worksheet' オブジェクト」と出ます
どうしても最後の行をセレクトしたいのですが、どうしたらよいでしょうか。


Option Explicit
Public WB1 As Workbook
Public WB1SH1 As Worksheet

Public CSVWB1 As Workbook
Public CSVWB1SH1 As Worksheet

Dim MaxRow As Integer

Private Sub CommandButton1_Click()

Set WB1 = ActiveWorkbook
Set WB1SH1 = WB1.Worksheets(1)
Dim a As String

a = WB1SH1.Range("a1)

Workbooks.Open "C:\Users\User\Desktop\" & a & ".CSV"

Set CSVWB1 = ActiveWorkbook
Set CSVWB1SH1 = CSVWB1.Worksheets(1)

MaxRow = CSVWB1SH1.Cells(Rows.Count, 1).End(xlUp).Row

WB1SH1.Activate
WB1SH1.Range(Cells(1, 1), Cells(MaxRow, 3)).Select
CSVWB1SH1.Activate
CSVWB1SH1.Range(Cells(1, 1), Cells(MaxRow, 3)).Select  '←ここでエラーがでる

End Sub

ExcelのVBAの質問になりますが、教えてください。
下記を動かすと最後の行で「'Range'メソッドは失敗しました: '_Worksheet' オブジェクト」と出ます
どうしても最後の行をセレクトしたいのですが、どうしたらよいでしょうか。


Option Explicit
Public WB1 As Workbook
Public WB1SH1 As Worksheet

Public CSVWB1 As Workbook
Public CSVWB1SH1 As Worksheet

Dim MaxRow As Integer ...続きを読む

Aベストアンサー

初心者さんが必ず一度は失敗します。


>Private Sub CommandButton1_Click()

のようにシートオブジェクトに記載したマクロでは、シートを修飾しないセル(レンジ)オブジェクトは全て「マクロを記載したシート」に紐付けられています。


CSVWB1SH1.Range(CSVWB1SH1.Cells(1, 1), CSVWB1SH1.Cells(MaxRow, 3)).Select
のようにしなければいけません。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング