ヘルプを利用して抽出用クエリーやレポート、マクロを作成したのですが、実行してみるとマクロ内の"値の代入"の時点でエラーが出てしまいます。
値の代入で、アイテムに対して可視を設定するようにヘルプにはあるのですが、この設定では正しく作動しません。
どのようにすれば正しく作動するのか教えて頂きたいのですがよろしくお願いいたします。

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

A 回答 (1件)

そのマクロはレポートの印刷時(またはフォーマット時)イベントで指定しているのでしょうか?何かのコントロールの値によって可視を切り替えしているのでしょうか。

コントロールの値などによって切り替えしているのでしたら、そのコントロール名がレポート上にありますか?

単純な処理だと思いますので、マクロでも可能ですが、逆にVBAで書いても簡単だと思いますよ。
    • good
    • 0
この回答へのお礼

お礼を申し上げるのが遅くなりまして申し訳ありません。
回答を頂きありがとうございました。
時間をかけて手直しをしていたらなんとか起動してくれるようになりました。

お礼日時:2002/02/09 13:12

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

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

Qエクセル グラフの軸の最小値最大値をセル参照させるマクロ

エクセルでグラフを作成し,軸の最小値,最大値をそれぞれセルA1,セルA2で参照させるには,類似質問で以下のマクロが必要だとわかりました。
 ただし,このマクロを実行するには,シート上のグラフを選択してから,Alt+F8キーを押して,マクロダイアログボックスを起動させて,「実行」ボタンを押すという過程が必要です。

Sub 最大最少値()

With ActiveChart.Axes(xlValue)
.MinimumScale = Range("A1").Value '最小値
.MaximumScale = Range("A2").Value '最大値
End With
End Sub


 この煩瑣な過程を経ずに,マクロボタン一発で同様の処理を行いたいと思い,2行目のグラフ選択のコードを加えて,以下のマクロを作成してみました。

Sub 最大最少値()

ActiveSheet.ChartObjects.Select

With ActiveChart.Axes(xlValue)
.MinimumScale = Range("A1").Value '最小値
.MaximumScale = Range("A2").Value '最大値
End With
End Sub

 ところが,「オブジェクト変数または With ブロック変数が設定されていません」というデバッグが表示され,3行目の With ActiveChart.Axes(xlValue) 部がエラーとなり,マクロが実行できません。

 これを解決するには,どうしたらよいでしょうか。ご教授ください。

エクセルでグラフを作成し,軸の最小値,最大値をそれぞれセルA1,セルA2で参照させるには,類似質問で以下のマクロが必要だとわかりました。
 ただし,このマクロを実行するには,シート上のグラフを選択してから,Alt+F8キーを押して,マクロダイアログボックスを起動させて,「実行」ボタンを押すという過程が必要です。

Sub 最大最少値()

With ActiveChart.Axes(xlValue)
.MinimumScale = Range("A1").Value '最小値
.MaximumScale = Range("A2").Value '最大値
End With
...続きを読む

Aベストアンサー

アクティブシート上に複数のグラフがありませんか?複数ある場合は、そのうちのどれをSelectするかを指定する必要があるはずです
例えば、こんな感じで、どうでしょう?

ActiveSheet.ChartObjects(1).Select

Q完全一致したら代入するマクロを教えてください

エクセルのSheet1のa列にある文字列と、Sheet2にあるa列にある文字列と完全一致したら、前者のセルの右隣に後者のセルの右隣の文字列を代入するマクロをお教えください。単純にvlookup関数を使えばいいのですが、VBAで行いたいのです。よろしくお願い申し上げます。

Aベストアンサー

一例です。

Sub sample()
Set st1 = Worksheets("sheet1")
Set st2 = Worksheets("sheet2")
For i = 1 To st1.Cells(Rows.Count, 1).End(xlUp).Row
Set pos = st2.Range("a:a").Find(st1.Cells(i, 1), _
LookAt:=xlWhole, MatchCase:=True, MatchByte:=True)
If Not pos Is Nothing Then
st1.Cells(i, 1).Offset(o, 1) = pos.Offset(0, 1)
End If
Next
End Sub

Q完全一致したら複数のセル代入するマクロは?

エクセルのSheet1のa列にある文字列と、Sheet2にあるa列にある文字列と完全一致したら、前者のセルの右隣から3番目までのセルに、後者のセルの右隣から3番目までの文字列を順に代入するマクロをお教えください。単純にvlookup関数を使えばいいのですが、VBAで行いたいのです。複数のセルに順に代入するのに苦慮しています。よろしくお願い申し上げます。

Aベストアンサー

例えば次のようなVBAにします。

Sub 試験()

Dim Row1 As Integer
Dim Coln1 As Integer
Dim Row2 As Integer
Dim Coln2 As Integer
Set WS1 = Worksheets("Sheet1")
Set WS2 = Worksheets("Sheet2")
Coln1 = 1
Coln2 = 1
For Row1 = 1 To WS1.Cells(Rows.Count, 1).End(xlUp).Row
For Row2 = 1 To WS2.Cells(Rows.Count, 1).End(xlUp).Row
If WS2.Cells(Row2, 1) = WS1.Cells(Row1, 1) Then
Do
Coln1 = Coln1 + 1
Coln2 = Coln2 + 1
WS1.Cells(Row1, Coln1) = WS2.Cells(Row2, Coln2)
Loop Until Coln1 = 4
Coln1 = 1
Coln2 = 1
End If
Next Row2
Next Row1

End Sub

例えば次のようなVBAにします。

Sub 試験()

Dim Row1 As Integer
Dim Coln1 As Integer
Dim Row2 As Integer
Dim Coln2 As Integer
Set WS1 = Worksheets("Sheet1")
Set WS2 = Worksheets("Sheet2")
Coln1 = 1
Coln2 = 1
For Row1 = 1 To WS1.Cells(Rows.Count, 1).End(xlUp).Row
For Row2 = 1 To WS2.Cells(Rows.Count, 1).End(xlUp).Row
If WS2.Cells(Row2, 1) = WS1.Cells(Row1, 1) Then
Do
Coln1 = Coln1 + 1
Coln2 = Coln2 + 1
WS1.Cells(Row1, Coln1) = WS2.Cells(Row2, Coln2)
Loop Until Coln1 = 4
Coln...続きを読む

QExcelマクロ オートフィルタ可視領域の特定部分をコピー

何方か、回答をお願いします。
下記もマクロは 、B列:C列(B1:C1はタイトル)をオートフィルタに掛けて
フィルタに掛かった一番上のデータをコピーして貼り付けているマクロですが。

やりたいことは、B1:C1のタイトルとフィルタに掛かった可視領域の一番上の
データ(オートフィルタに引っかからないでデータが無い場合も有り)をコピー
して貼り付けたいのですがどの様なコードを書けば良いのでしょうか。?

Sub フィルタ()
Range("B1:C1").Select
Selection.AutoFilter
Selection.AutoFilter Field:=2, Criteria1:=">=1e-6"
Range("B1").CurrentRegion.Select
On Error Resume Next
Selection.SpecialCells(xlCellTypeVisible).Areas(2).Rows(1).Select
Selection.Copy
Range("K15").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.AutoFilter
End Sub

何方か、回答をお願いします。
下記もマクロは 、B列:C列(B1:C1はタイトル)をオートフィルタに掛けて
フィルタに掛かった一番上のデータをコピーして貼り付けているマクロですが。

やりたいことは、B1:C1のタイトルとフィルタに掛かった可視領域の一番上の
データ(オートフィルタに引っかからないでデータが無い場合も有り)をコピー
して貼り付けたいのですがどの様なコードを書けば良いのでしょうか。?

Sub フィルタ()
Range("B1:C1").Select
Selection.AutoFilter
Selection.Au...続きを読む

Aベストアンサー

こんにちは。
ご提示のコードの仕様だと
Sub sample()
  With Range("B1").CurrentRegion
    .AutoFilter Field:=2, Criteria1:=">=1e-6"
    If Range("B65536").End(xlUp).Row > 1 Then
      .Offset(1).SpecialCells(xlCellTypeVisible).Rows(1).Copy Range("K15")
    End If
    .AutoFilter
  End With
End Sub
こんな感じ。

B1:C1のタイトルも必要なら
Sub sample2()
  Dim n As Long
  With Range("B1").CurrentRegion
    .AutoFilter Field:=2, Criteria1:=">=1e-6"
    If Range("B65536").End(xlUp).Row > 1 Then
      n = .Offset(1).SpecialCells(xlCellTypeVisible).Cells(1).Row
      Range("B1:C" & n).Copy Range("K15")
    End If
    .AutoFilter
  End With
End Sub

こんにちは。
ご提示のコードの仕様だと
Sub sample()
  With Range("B1").CurrentRegion
    .AutoFilter Field:=2, Criteria1:=">=1e-6"
    If Range("B65536").End(xlUp).Row > 1 Then
      .Offset(1).SpecialCells(xlCellTypeVisible).Rows(1).Copy Range("K15")
    End If
    .AutoFilter
  End With
End Sub
こんな感じ。

B1:C1のタイトルも必要なら
Sub sample2()
  Dim n As Long
  With Range("B1").CurrentRegion
    .AutoFilter Field:=2, ...続きを読む

QA列の最大値が入っている横に○を入れる及び最大値の行数をマクロで所得

何方か、教えてください。
A列に下記の様な数値データが有りますが、

A列
1.24e-12
8.48e-12
4.41e-9
0.254     ○
......
.....
質問(1)
A列の最大値が入っている横(B列)に○を入れる関数
(他のB列は空白がいいです。)

質問(2)
マクロでA列の最大値の行数を所得する方法

では、宜しくお願いします。

Aベストアンサー

#4の補足について
>mに数値が編入されますが、Cellsはセルの位置と本には書いています。どうしてmに数値が入るのでしょうか?
私の悪い癖で、Valueを全て省いています。省くとValueと看做してくれる仕組みがあるからです。
m=Cells(i,"A").Value というプロパティを付け加えて考えてください。ほかにセルには書式やコメントや色々のものがある中で、「値」は表計算ソフトの歴史的にも(昔は文字にも色は付かなかった)、表計算は値から始まり、一番大事なデータです。
ついでに別件ですが、他のご回答の中に
>#4 のご回答のように総当りで見つける
と「総当り」という表現がありますが、そもそも最大値は全部の値を読まないと決まらないものです。関数などは、裏では比較や繰り返しをやっているはずだが、表には出していません。そういう繰り返しや比較などを隠した利器(関数やメッソッドなど)を使って進むのが、進歩なんですが、時には原始的な方法でやってみたいときが有ります。


このカテゴリの人気Q&Aランキング

おすすめ情報