下記のマクロでエクセルの表からデータ(文字列)を取得するようにしたいとおもっています。

Range("B23").Select
Selection.Copy
Range("F23").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
Range("B24").Select
Selection.Copy
Range("F24").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("B25").Select
Application.CutCopyMode = False
Sheets("September 03").Copy Before:=Sheets(2)          ←ここ
Selection.Copy
Sheets("September 03 (2)").Select                   ←ここ
Sheets("September 03 (2)").Name = "September 10"       ←ここ
Range("B33").Select
Application.CutCopyMode = False
ActiveWindow.SmallScroll Down:=-15
Range("F12:L18").SelectEnd Sub

と、まだ続くんですが、とりあえずここまでで。
番地のデータを取り込むようにしたいんですが、うまくいきません。
←ここ
っていうのがまさにそれです。

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

A 回答 (2件)

このマクロはシートSeptember03 のコードウィンドウに書かれていますか?



標準モジュールにあれば動くような気がしますが・・・・

シート名September10のシートを作った時にSeptember10がアクティブになって、次のRangeがエラーになってしまうように見えます。

標準モジュールになければ、標準モジュールにコピーして試されたらどうでしょうか。外していたらすいません。
    • good
    • 0
この回答へのお礼

いえ、はずしてないです。ありがとうございます。
ただ、ほかのシートにもかかってくるので質問の仕方が悪かったと思います。

がんばって勉強します。
ありがとうございます。

お礼日時:2001/08/30 20:57

簡単な確認方法として、マクロを記録しながら行いたい作業を実行して見て下さい。


作成されたマクロを開いてみると、結構参考になります。

直接の回答でなくて済みません。でも習得するには結構近道ですよ。
    • good
    • 0
この回答へのお礼

そうみたいです。変な質問しちゃってすいません。

でも、すごくいい回答です。ありがとうございます。

お礼日時:2001/08/30 20:56

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

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

QmyText = Selection.Range.Textについて

任意の文字列を選択することを含むワードのマクロでは、検索置換ウインドウを使うと、以後、正常な置換が行われないようなのですが、どうしたら、正しい置換が行われるように確保できますでしょうか。どなたか、お教え願います。例えば、以下のコードです。

Dim myText As String
myText = Selection.Range.Text
With Selection.Find
With .Replacement.Font
.Name = "明朝"
.Color = 255
.Bold = True
End With
.ClearFormatting
.Text = myText
.Format = True
.Forward = True
.Wrap = wdFindAsk
'.Wrap = wdFindContinue
.MatchFuzzy = False
Selection.Find.Execute Replace:=wdReplaceAll
End With
ある文字列を選んで実行すると、赤字で太字になります。別の文字列をを選んで実行すると、同様に赤字で太字になります。ところが、検索置換ウインドウを使ってしまうと、その後は、検索置換ウインドウの入力状態に支配されてしまいます。
このようなことは、他のマクロでも確認しています。例えば次のマクロもそうです。
Dim myText As String
myText = Selection.Range.Text
Options.DefaultHighlightColorIndex = wdBrightGreen
With Selection.Find
With .Replacement
.ClearFormatting
.Highlight = True
End With
End With
With Selection.Find
With .Replacement
.ClearFormatting
.Highlight = True
End With
.ClearFormatting
.Text = myText
.Format = True
.Forward = True
.Wrap = wdFindAsk
'.Wrap = wdFindContinue
'.MatchFuzzy = True
Selection.Find.Execute Replace:=wdReplaceAll
End With

myText = Selection.Range.Textはだめなようです。
通常の検索置換は、検索置換ウインドウが作動するようです。検索置換ウインドウが作動しない検索置換のコードがあれば教えてください。
For~Nextによる一文字ずつの繰り返し処理では時間がかかるので、一ワードずつFor Eachの繰り返し処理で検索置換ウインドウが作動しない検索置換のコードがあれば教えていただけると幸甚です。

任意の文字列を選択することを含むワードのマクロでは、検索置換ウインドウを使うと、以後、正常な置換が行われないようなのですが、どうしたら、正しい置換が行われるように確保できますでしょうか。どなたか、お教え願います。例えば、以下のコードです。

Dim myText As String
myText = Selection.Range.Text
With Selection.Find
With .Replacement.Font
.Name = "明朝"
.Color = 255
.Bold = True
End With
.ClearFormatting
.Text = myText
...続きを読む

Aベストアンサー

こんにちは。

同じ内容の趣旨の質問が、別に出ていますが、私は、もう回答のしようがないです。
http://oshiete1.goo.ne.jp/qa4197645.html

あまりつまらない書き方はしたくありませんが、Word マクロを本当に解答できる人は、ここのカテゴリでも、本当に少ないのです。どうやら、こちらの提供したマクロ自体は、本当の検証はされていないようにお見受けしています。

今回の質問は、既に、同じ趣旨の解答は数度してきました。「Word 2002」 で、万が一、私のコードで動かないなら、それは、その中のプロパティの一部にサポートされないものがあるとは解釈できますが、そのご指摘もありませんでした。

ただ、今回は、どうみても、それは、ご自身が削除したのか、ご自身がアレンジして、不具合が生じたものだと思えます。記録マクロなら、記録マクロレベルでもよいと思います。しかし、その都度、自分流にアレンジして、不具合があると言われても、キリがありません。プロパティのデフォルト値だと思って削除したコードがあるはずだと思われます。一見、サマになっているようでも、単独のマクロとしては、一目見て、プロパティ値が足りません。当然、マニュアル・コマンドの時の設定値が残ってしまいます。

基本的に、自分がアレンジしてよい部分と、そうではない部分は、一つずつ、自分自身で吟味しないといけません。一つ一つの意味を理解しながら、コードを書かないと、いつまでも、同じことの繰り返しになってしまいます。もしも、意味が不明なプロパティがあるときは、いじらないようにする、ということです。

ご自身が質問してレスを貰った中のコードをもう一度検討し、どこが違うのかみてください。これ以上、私個人としては、この件で掲示板で教えるには限界です。

こんにちは。

同じ内容の趣旨の質問が、別に出ていますが、私は、もう回答のしようがないです。
http://oshiete1.goo.ne.jp/qa4197645.html

あまりつまらない書き方はしたくありませんが、Word マクロを本当に解答できる人は、ここのカテゴリでも、本当に少ないのです。どうやら、こちらの提供したマクロ自体は、本当の検証はされていないようにお見受けしています。

今回の質問は、既に、同じ趣旨の解答は数度してきました。「Word 2002」 で、万が一、私のコードで動かないなら、それは、その中のプ...続きを読む

QSheet1に元がありSheet2で分けたものをSheet1で選択する方法がないですか?

またまた、質問させてください。

Sheet1が元ファイルSheet2に分けたものがあります。

-----------------------------------------
Sheet1

  A  B  C  D
1 sb
2 sg
3 sh
4 sm
5 ko

-----------------------------------------
Sheet2

  A  B  C  D
1 sb  sg  sh sm
2 ko
3 
4
-----------------------------------------

Sheet2のA列のものだけSheet1で選択したいのですがなにか方法がないでしょうか?

Aベストアンサー

No.1です。

>コピーして隣のセルに貼り付けすると詰まって貼り付けされてしまいますがそのまま貼り付けすることはできるのでしょうか?

単純にSheet2のA列データをSheet1のA列と一致する行のB列に表示すればよいわけですね?
やり方を全く変えてみました。
今回も標準モジュールです。

Sub Sample3()
Dim i As Long, c As Range, wS As Worksheet
Set wS = Worksheets("Sheet2")
With Worksheets("Sheet1")
For i = 1 To wS.Cells(Rows.Count, "A").End(xlUp).Row
Set c = .Range("A:A").Find(what:=wS.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
c.Offset(, 1) = wS.Cells(i, "A")
End If
Next i
End With
End Sub

何とかお望みどおりにならないでしょうか?m(_ _)m

No.1です。

>コピーして隣のセルに貼り付けすると詰まって貼り付けされてしまいますがそのまま貼り付けすることはできるのでしょうか?

単純にSheet2のA列データをSheet1のA列と一致する行のB列に表示すればよいわけですね?
やり方を全く変えてみました。
今回も標準モジュールです。

Sub Sample3()
Dim i As Long, c As Range, wS As Worksheet
Set wS = Worksheets("Sheet2")
With Worksheets("Sheet1")
For i = 1 To wS.Cells(Rows.Count, "A").End(xlUp).Row
Set c = ....続きを読む

QSelectionとSelectについて?(エクセルVBA)

任意に範囲選択したセルのうち数式が定義されているセルのみを選択するマクロについて教えてください。
次のようにコードを書いて
Sub TEST()
' MsgBox Selection.Address
Selection.SpecialCells(xlCellTypeFormulas).Select
End Sub
任意の複数のセルに数式を定義します。(配置はばらばらでも構いません)
あるセル範囲を選択して上のコードを実行すると、次のような動作になります。
数式を定義したセル(以降、数式セル)を1つ以上と、数式の定義に関わらず別の1つ以上を含むセル範囲を選択した場合は、希望通りに数式セルが選択されます。
しかし、数式セルを一つだけ選択してコードを実行すると、シート全体で数式セルが選択されてしまいます。
ヘルプをみると、Selectionには、セルを選択しているときは、Range オブジェクトが返されます。とあり、SpecialCellsには、オブジェクトを返すメソッドです。指定された条件を満たしているすべてのセル (Range オブジェクト) を返します。とあります。
素人的には、Selection プロパティで返されるオブジェクトの種類は、何を選択するかによって異なります。の部分で、返されるオブジェクトが一つのセルを選択した場合は、オブジェクトがシートになってしまっているからだと推測します。しかし、複数のセルを結合したセルに数式を定義した場合で、一つの数式結合セルを選択して、MsgBox Selection.Addressと表示させると、Selectionは、複数のセルからなるセル範囲を返している様なメッセージが表示されるのに、次の行では、同じくシート全体が選択されてしまいます。
回避する方法ってないのでしょうか?教えて頂けないでしょうか?宜しくお願い致します。
また、説明が悪くてすみません。

任意に範囲選択したセルのうち数式が定義されているセルのみを選択するマクロについて教えてください。
次のようにコードを書いて
Sub TEST()
' MsgBox Selection.Address
Selection.SpecialCells(xlCellTypeFormulas).Select
End Sub
任意の複数のセルに数式を定義します。(配置はばらばらでも構いません)
あるセル範囲を選択して上のコードを実行すると、次のような動作になります。
数式を定義したセル(以降、数式セル)を1つ以上と、数式の定義に関わらず別の1つ以上を含むセル範囲を選択...続きを読む

Aベストアンサー

こんにちは。KenKen_SP です。

Intersect を使います。こんな感じ。

Sub Sample()

  Dim rngAREA As Range

  'Selection がセル以外なら終了
  If TypeName(Selection) <> "Range" Then Exit Sub

  'Selection と 数式のあるセルの交差範囲をオブジェクト変数にセット
  Set rngAREA = Intersect(Selection, Cells.SpecialCells(xlCellTypeFormulas))

  '交差範囲がなければオブジェクト変数は Nothing
  If Not rngAREA Is Nothing Then
    'Nothing でなければ選択
    rngAREA.Select
  End If

  '後始末
  Set rngAREA = Nothing

End Sub

QExcel2003 Range("XXX").Copyについて

下記のようにコピペをしたいのですが
ActiveSheet.Paste
Sheets("sheets1").Range("V3").Copy
Worksheets("sheets2").Activate
Sheets("sheets2").Range "A1").Select
上の方法だと良く行くのですが下記だとSheets("sheets1").Cells(9,16).Copyエラーになってしまします。どうしてもCells(9,16) を使いたいのですが方法を教えてください。
ActiveSheet.Paste
Sheets("sheets1").cells(9,16).Copy
Worksheets("sheets2").Activate
Sheets("sheets2").Range "A1").Select
よろしくお願いします。

Aベストアンサー

Sheets("sheets1").Cells(9,16).Copy
上記コードの構文は間違っていないと思います。
エラーの内容はどうなっていますか?
「実行時エラー9:インデックスが有効範囲にありません。」
ということでしたら、シート(sheets1)が見つからない、ということです。
シート名が間違っていたりしませんか?

それと順序として、CopyしてからPasteですから
ActiveSheet.Paste
の位置がおかしいです。
下記のように(シート名の正誤は別にして)なります。

Sheets("sheets1").cells(9,16).Copy
Worksheets("sheets2").Activate
Sheets("sheets2").Range("A1").Select
ActiveSheet.Paste

Application.CutCopyMode = False
↑コピーモードを解除しておきましょう。

参考までに
Sheets("sheets1").cells(9,16).Copy Sheets("sheets2").Range("A1")
というように1行に纏める事ができます。
ActivateとかSelectする必要はありません。
Application.CutCopyMode = False
も必要ありません。

Sheets("sheets1").Cells(9,16).Copy
上記コードの構文は間違っていないと思います。
エラーの内容はどうなっていますか?
「実行時エラー9:インデックスが有効範囲にありません。」
ということでしたら、シート(sheets1)が見つからない、ということです。
シート名が間違っていたりしませんか?

それと順序として、CopyしてからPasteですから
ActiveSheet.Paste
の位置がおかしいです。
下記のように(シート名の正誤は別にして)なります。

Sheets("sheets1").cells(9,16).Copy
Worksheets("s...続きを読む

QエクセルでSheetからSheetへの飛ばし方

Sheet1、Sheet2、Sheet3、Sheet4それぞれに一覧表データが入っています。(一覧表はすべて同じ様式)
この4つのSheetのデータをSheet5に蓄積させるにはどうすればよいでしょうか。
Sheet5を見れば、Sheet1~Sheet4までの全ての一覧表の合体版が見れるようにしたいのですが・・・。蓄積されるデータの順番は問いません。
セルの端にどのSheetからとんできたかは分かるようにしたいです。
教えて下さい。

Aベストアンサー

もう1点の方が閉じられてしまったのでこちらに。

AdvancedFilterでの一案。

C2~C14の項目をA5~M5に並べ替えて下さい。
注意は、C5~M5の項目名と各学校シートの項目名が一致している事。

検索値の入力は、6行目から10行目まで対応してます。
必ず上の行から入れて下さい。
例)国語 且つ 教材
6行目の該当項目に 国語 と 教材 を入力します。

例)国語 又は 理科
該当する項目に 6行目に 国語  7行目に理科 を入力して下さい

例)国語 又は 教材
6行目に 国語 7行目に 教材 です。

6行目の次に8行目に打ち込んだ場合、8行目は無視されます。
検索に有効だったものについては、薄緑色にセルが塗りつぶされます。
6行目を飛ばした場合は、その場で中断します。

新しくシートを作成して”検索シート2”として、コードに学校名を訂正し、
コマンドボタンを作成してから試してみて下さい。

Private Sub CommandButton1_Click()
Dim WS As Worksheet
Dim r As Range
Dim rr As Range, rs As Range
Dim kr As Range, kk As Range
Dim v As Variant, vv As Variant
Dim i As Integer, j As Integer

Set WS = Worksheets("検索シート2")
Set rr = WS.Range("B21")

Set kr = WS.Range("C5")
kr.Resize(6, 11).Interior.ColorIndex = 0

For Each kk In WS.Range("C6:C10")
If WorksheetFunction.CountA(kk.Resize(, 11)) > 0 Then
Set kr = Union(kr, kk)
Else
Exit For
End If
Next

Set kr = kr.Resize(, 11)
If kr.Cells.Count < 12 Then
MsgBox "検索値の入力でミスがあります" & vbLf & _
"中止します"
WS.Range("A20").CurrentRegion.ClearContents
Exit Sub
End If

kr.Interior.ColorIndex = 35
WS.Range("A20").CurrentRegion.ClearContents
WS.Range("A20").Value = "学校名"
WS.Range("B20").Resize(, 12).Value = _
Worksheets("A").Range("A2:L2").Value

' 上と下の"A","B","C","D"は実際のシート名(学校名)に変更願います。

For Each v In Array("A", "B", "C", "D")
With Worksheets(v)
Set r = .Range(.[A2], .Cells(Rows.Count, "A").End(xlUp)).Resize(, 12)
r.AdvancedFilter xlFilterInPlace, kr, , False
Set rs = .Range(.[A3], .Cells(Rows.Count, "A").End(xlUp)).Resize(, 12).SpecialCells(xlCellTypeVisible)

If rs.Item(1).Row <> 2 Then
rs.Copy rr
rr.Offset(, -1).Resize(rs.Cells.Count / 12).Value = v
Set rr = rr.Cells(rs.Rows.Count, 1).Offset(1)
End If
.ShowAllData
End With
Application.CutCopyMode = False
Next
End Sub
うまくいけばいいですが。

もう1点の方が閉じられてしまったのでこちらに。

AdvancedFilterでの一案。

C2~C14の項目をA5~M5に並べ替えて下さい。
注意は、C5~M5の項目名と各学校シートの項目名が一致している事。

検索値の入力は、6行目から10行目まで対応してます。
必ず上の行から入れて下さい。
例)国語 且つ 教材
6行目の該当項目に 国語 と 教材 を入力します。

例)国語 又は 理科
該当する項目に 6行目に 国語  7行目に理科 を入力して下さい

例)国語 又は 教材
6行目に 国語 ...続きを読む


人気Q&Aランキング

おすすめ情報