- ベストアンサー
エクセルVBAで選んだもの以外の処理をする方法
HohoPapaの回答
スライサーは、 Office2013とOffice2016とで、 添付画像の違いがあります。 >551320を選んだら、それ以外はFalse になってほしいとの記述から Office2016をお使いで、かつ 赤丸囲み部分がオンなんだろうと思います。 これをオフにすることで期待の動作になります。 オンラインヘルプなどを追いかけてみましたが これをオフ/オンするメソッドやプロパティ、 スライサーをクリックしたときのイベントは見つかりませんでした。
関連するQ&A
- エクセルVBA
よろしくお願いいたします。 エクセルのVBAですが、下記のコードを実行すると処理が遅いです。処理が早くなるコード教えてください。 よろしくお願いいたします。 Sub Macro3() Dim aa As Variant Dim i As Variant Application.ScreenUpdating = False Range("A14:i46").Select aa = ActiveSheet.Name ActiveWorkbook.Worksheets(aa).Sort.SortFields.Clear ActiveWorkbook.Worksheets(aa).Sort.SortFields.Add Key:=Range("B15:B46"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal ActiveWorkbook.Worksheets(aa).Sort.SortFields.Add Key:=Range("C15:C46"), _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets(aa).Sort .SetRange Range("A14:i46") .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With For i = 0 To 31 Cells(15 + i, 7).Select If Selection.Value = 0 Then Selection.EntireRow.Hidden = True End If Next i Range("A1").Select Application.ScreenUpdating = True End Sub
- ベストアンサー
- オフィス系ソフト
- Excelの三つのVBAを一つにまとめる。
初めまして、よろしくお願いします。当方全くの素人でVBAの基礎もよくわからず、ネットから拾ってきていじった三つのVBAがあります。この三つ、一つ一つは個別に機能するのですが、VBAとして正しいのかさえよく解っていません。この三つを一つにまとめて、同時に機能するようにしたいと頭を抱えています。 Sub TEST() Application.ScreenUpdating = False Application.EnableEvents = False ActiveSheet.Calculate Range("b10:b20").Insert shift:=xlShiftToRight Range("b10:b20").Value = Range("a10:a20").Value Application.OnTime TimeValue("09:00:00"), "TEST" Application.ScreenUpdating = True Application.EnableEvents = True ActiveWorkbook.Save End Sub ________________________________________________________________ Sub TEST1() Application.ScreenUpdating = False Application.EnableEvents = False ActiveSheet.Calculate Dim myCnt As Long Range("c30:c40").Copy Range("d30:d40").PasteSpecial Paste:=xlPasteValues Range("b30:b40").Copy Range("c30:c40").PasteSpecial Paste:=xlPasteValues Range("a30:a40").Copy Range("b30:b40").PasteSpecial Paste:=xlPasteValues nextTime = Now() + TimeValue("01:00:00") Application.OnTime nextTime, "TEST1" Application.ScreenUpdating = True Application.EnableEvents = True ActiveSheet.Calculate ActiveWorkbook.Save End Sub ________________________________________________________________ Sub TEST2() Application.ScreenUpdating = False Application.EnableEvents = False ActiveSheet.Calculate Dim myCnt As Long Range("c50:c60").Copy Range("d50:d60").PasteSpecial Paste:=xlPasteValues Range("b50:b60").Copy Range("c50:c60").PasteSpecial Paste:=xlPasteValues Range("a50:a60").Copy Range("b50:b60").PasteSpecial Paste:=xlPasteValues nextTime = Now() + TimeValue("00:10:00") Application.OnTime nextTime, "TEST2" Application.ScreenUpdating = True Application.EnableEvents = True ActiveSheet.Calculate ActiveWorkbook.Save End Sub ________________________________________________________________ 解る方、よろしくお願いします。
- 締切済み
- オフィス系ソフト
- エクセル2010をVBAによりリボンの最小化処理
前回、「エクセル2010をマクロによりリボンの最小化処理(QNo.7450319)」により、 Sub macro1() CommandBars.ExecuteMso "MinimizeRibbon" End sub とします。 再度実行すると再表示します。 との回答をいただき早速利用しておりますが、FALSEとTRUEを使い、最小化と再表示を下記の様なコ-ドで出来ないものか、ご教示願います。 (リボンの最小化) Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""RIBBON"",FALSE)" (リボンの再表示) Application.ExecuteExcel4Macro "SHOW.TOOLBAR(""RIBBON"",TRUE)"
- 締切済み
- オフィス系ソフト
- excel vba
(1)下記のマクロに出てくるApplication.CutCopyMode = False というのは何でしょうか。 (2)また自分でマクロ記録してあるシートを、別のシートにコピーしたとき Application.CutCopyMode = False Selection.Copy というのが、付くときとつかないときがあったんですがなぜそのようなことがおきるのか。 (3)またSelection.Copyというのは何ですか。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2007/1/11 ユーザー名 : ××××× ' ' Workbooks.Open Filename:="C:\aaa\bbbbb\cccc\aaaa_1.xls" Columns("H:H").Select Application.CutCopyMode = False Selection.Cut Columns("E:E").Select Selection.Insert Shift:=xlToRight Columns("I:I").Select Selection.Cut Columns("G:G").Select Selection.Insert Shift:=xlToRight With Selection.Font .Name = "MS 明朝" .Size = 10 .Strikethrough = False .Superscript = False .Subscript = False .OutlineFont = False .Shadow = False .Underline = xlUnderlineStyleNone .ColorIndex = xlAutomatic End With ActiveSheet.PageSetup.PrintArea = "$A$1:$L$61" ActiveWorkbook.Save End Sub
- ベストアンサー
- オフィス系ソフト
- WORD VBA 繰り返し処理
WORD VBAについて教えてください。 つぎのようなマクロがあり、これを検索する文字列がなくなるまで、繰り返して、処理するようにしたいのですが、どうすればよいのでしょうか? Sub Macro1() Selection.Find.ClearFormatting With Selection.Find .Text = "あ" .Replacement.Text = "" .Forward = True .Wrap = wdFindContinue .Format = False .MatchCase = False .MatchWholeWord = False .MatchByte = False .MatchAllWordForms = False .MatchSoundsLike = False .MatchWildcards = False .MatchFuzzy = True End With Selection.Find.Execute Selection.MoveRight Unit:=wdCharacter, Count:=1 End Sub
- ベストアンサー
- オフィス系ソフト
- エクセルVBA【ワークシートのコピー】について
以下のVBA記述で、とあるエクセルファイルのシートをCSV化しようとしております。記述の場合、すべてのワークシートが対象となっていますが、10個くらいあるWorkSheetの【sheets(8)】のみを対象としたいのですが、どのようにしたら良いのでしょうか? お手数ですがご教授下さい。 Sub test() Dim sh As Worksheet Dim fname As String Application.ScreenUpdating = False For Each sh In ActiveWorkbook.Worksheets fname = "C:\temp\" & sh.Name & ".csv" sh.Copy With ActiveWorkbook .SaveAs Filename:=fname, FileFormat:=xlCSV .Close savechanges:=False End With Next sh Application.ScreenUpdating = True End Sub
- ベストアンサー
- オフィス系ソフト
- エクセルのマクロコードに付いて教えて下さい。
下記のマクロコードがありますが、 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$1" Then Exit Sub x = Target.Value With Application .ScreenUpdating = False .EnableEvents = False .Undo y = Target.Value Target.Value = x + y .EnableEvents = True .ScreenUpdating = True End With End Sub セル位置の指定を変更する場合は、どの様に 書けば良いのですか? このコードですと、セルA1の入力指定でなっていますが A1~A5までとか。A1、B1,C1とかにする場合はどの様に 書けば良いか教えて下さい。 マクロに付いて、殆ど知識が無いものですので 出来れば、分かり易い説明でお願いします。 宜しくお願いします。
- 締切済み
- 数学・算数
- エクセルのVBAの記述について
VBAの記述についてなのですが、 Sub filter() Dim gyo As Long Dim ws1 As Worksheet Dim ws2 As Worksheet Dim ws3 As Worksheet Set ws1 = Worksheets("データ") Set ws2 = Worksheets("チーム") Application.ScreenUpdating = False ws2.Range("A4:BH30").Clear gyo = ws1.Range("A65536").End(xlUp).Row ws1.Activate With ws1.Range(Cells(4, 1), Cells(gyo, 6)) .AutoFilter Field:=1, Criteria1:="A" .SpecialCells(xlCellTypeVisible).Copy ws2.Range("A4") Selection.AutoFilter End With Application.ScreenUpdating = True End Sub ならプログラムははしるのですが、 14行目を .SpecialCells(xlCellTypeVisible).Copy ws2.Range(Cells(4, 1)) だと 「実行時エラー 1004 Rangeメソッドは失敗しました Worksheet オブジェクト」 とでるのですが、出来ないのでしょうか? Cells(4, 1)の1のところを変数にして変えていきたいのですが、よい方法はありますか。 よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- エクセルVBAで読み取りパスワード回避
エクセル2010です。 以下のコードで任意のフォルダ内のエクセルBOOKから所定のデータを取得できます。 しかし、指定フォルダ内に読み取りパスワードが設定されたものがあると、開くことができずに止まってしまいます。 読み取りパスワードが同一で、事前に分かっていればコードにPassword:="AAAABBBB" などと書き入れればいいと思うのですが、事前にはわかりませんし、パスワードもそれぞれ異なります。 そこで、開けなかった場合には、そのBOOKを飛ばしてすすみ、別シートに飛ばしたBOOK名を記録しておきたいのです。 (BOOK作成者にあとからパスワードを聞くため) しかし、残念ながらどのように書けばいいのか思いつきません。 ご指導いただければ幸いです。 Sub TEST001() Dim wb(1) As Workbook Dim ws(1) As Worksheet Dim myFdr As String, fn As String Dim i As Long With Application.FileDialog(msoFileDialogFolderPicker) 'フォルダ指定 If .Show = True Then myFdr = .SelectedItems(1) Else Exit Sub End If End With Application.ScreenUpdating = False '画面更新を一時停止 Set wb(0) = ThisWorkbook 'このコピー先ブックをwb(0)とする。 Set ws(0) = wb(0).Sheets(1) 'wb(0)の1枚目のシートをws(0)とする。 fn = Dir(myFdr & "\*.xls*") 'フォルダ内のExcelブックを検索 Do Until fn = Empty '全て検索 Application.EnableEvents = False Set wb(1) = Workbooks.Open(myFdr & "\" & fn, UpdateLinks:=False, ReadOnly:=True) 'そのブックを開きwb(1)とする。 Set ws(1) = wb(1).Worksheets(1) i = i + 1 ws(0).Cells(i, "A").Value = ws(1).Range("B2") 'ws(0)に転記 ws(0).Cells(i, "B").Value = wb(1).Name ws(0).Cells(i, "C").Value = ws(1).Name wb(1).Close (False) '保存せず閉じる Application.EnableEvents = True fn = Dir 'フォルダ内の次のExcelブックを検索 Loop '繰り返す Application.ScreenUpdating = True '画面更新停止を解除 MsgBox i & "個取得" End Sub
- ベストアンサー
- Excel(エクセル)
- エクセルVBAでデータ並べ替え
マクロ記録をとると次のようになりました。 これをA列をキーに並べるもっと簡単なコードを教えてください。 Range("A2:G501")となっていますが、これ以上でも対応できるようにしたいです。 どなたか教えていただけないでしょうか。 Sub Macro1() Range("A1").Select ActiveWorkbook.Worksheets("***").Sort.SortFields.Clear ActiveWorkbook.Worksheets("***").Sort.SortFields.Add Key:=Range("A1"), SortOn _ :=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal With ActiveWorkbook.Worksheets("***").Sort .SetRange Range("A2:G501") .Header = xlNo .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With End Sub
- ベストアンサー
- オフィス系ソフト