• 締切済み

エクセルのマクロについて教えてください。

わかりにくい説明になって申し訳ないのですが、1枚のシートにひとつの市の町名を入力しています。 1つのセルに1つの町名を入れていて、ダブルクリックをすると、 別のシートに近隣7都道府県の市町村一覧を用意していて(全現場というシート名にしています) そのシートのE列に入っている町名をソートして表示しています。 シート見出しの上で右クリックし、「コードの表示」画面を出して(VBの画面です) Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) MsgBox (Target) Sheets("全現場").Select Selection.AutoFilter Selection.AutoFilter Field:=5, Criteria1:=(Target) End Sub というマクロを書いています。 町名の入ったセルをダブルクリックして町名をメッセージボックスで表示し、OKを選択するとソートするという動きになっています。 この動きには今のところ問題はありません。 ですが、別々の市に同じ町名があり、検索したときに、いろんな市が混じってしまうことがあり困っています。 それぞれの市のシート内には町名のみを入力しており、市の名前はシートの見出しに書いているのみなのですが、 どのようにマクロを書けば、市と町名で検索できるのかわかりません。 それぞれの市のシートのセル(例えばA1など)に新たに市の名前を入力するなどの手を加える事はできます。 エクセル&マクロ超初心者なので、説明が悪くて申し訳ありませんが、お分かりになる方是非教えてください。 宜しくお願いします。

noname#44756
noname#44756

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

>エクセル&マクロ超初心者なので、 マクロの初心者と関係なく、やっていること、困っている詳細が伝わらない。補足(書き直し)をしてはどうですか。 できればシートとセル(列行)を例示して説明されては。 ーー 質問のブックは1つですね。 シートは「市(町村)」ごとに別シートになっているのですか。 各市のシートには、その市の中の町名が全部あるのですね。 >近隣7都道府県の市町村一覧 7府県も必要なのですか。町の総数は相当多くなりますね。 現場の市+町名だけではダメなのですか。 ーー さてある町名の検索のための入力シードには、町名レベルで入力するのですか。 ーー 町名レベルで検索すると、色々な市に同一の町名が出るでしょうが それはどういう風に(ここだと)特定していますか。 ーー 特定して後どういう情報を得たり、処理しますか。 ーーー シートが多数に渉るものの中からの検索はエクセルではやりにくいように思います。 ーー 本格的なシステムを業者に頼むような内容で、>エクセル&マクロ超初心者なので、が出きる事項かどうか心配で、またOKWAVEで質問して答えられる、ちょっとした事項か疑問があります。

関連するQ&A

  • 【Excel】 マクロを補足してください。

    A1をダブルクリックすると E、D、C、B列のオートフィルタで「すべて」を 選択するようにしました。 続けて 同じシートで、B1をダブルクリックするとE、D、C列の オートフィルタで「すべて」を選択、 C1をダブルクリックするとE、D列のオートフィルタで 「すべて」を選択するようにしたいのですが、 どのようにしたらよいのでしょうか。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Target.Address <> "$A$1" Then Exit Sub Cancel = True Selection.AutoFilter Field:=5 Selection.AutoFilter Field:=4 Selection.AutoFilter Field:=3 Selection.AutoFilter Field:=2 End Sub お願いいたします。

  • エクセルマクロ

    エクセルマクロでダブルクリックしたら入力規制を解除するようにしたいです。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _ Cancel As Boolean) With Selection.Validation .Delete .Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertStop, Operator _ :=xlBetween .IgnoreBlank = True .InCellDropdown = True .InputTitle = "" .ErrorTitle = "" .InputMessage = "" .ErrorMessage = "" .IMEMode = xlIMEModeNoControl .ShowInput = True .ShowError = True End With End Sub でうまくいったのですが、シートの保護をしていると対象セルを保護しない、にしていてもできません。 何かよい方法はありませんか? 入力規制をしてリストを選択にしている場所に、直接入力したい場合があるのでそれを簡単にダブルクリックで解除できないか、というのが狙いです。 よろしくお願い致します。

  • エクセル マクロ ダブルクリックのイベント

    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As range) というマクロをしても動きません。どうしてでしょうか? 他のsheetchaneとかのマクロは動くのですが・・ (ダブルクリックしてもセルが入力可能な状態になるだけです)

  • マクロの動作するタイミング

    こんにちは。 VBAに関して初心者です。宜しくお願い致します。 sheet1のB1でsheet名の一覧をドロップダウンから選択できるようにし、 sheet1A列に、選択したsheetのA列が表示されるようにしました。 そのA列をオートフィルターで「空白以外のセル」を表示していますが、 これをマクロを使って、常にオートフィルターを適用した状態にしたく ---------------------------------------------------------- Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) Selection.AutoFilter Field:=1, Criteria1:="<>" Columns("A:A").Select Selection.Copy End Sub ---------------------------------------------------------- と、しました。 上記のマクロではB1で選択後、ダブルクリックするとA列の オートフィルターを適用し、その列をコピーする。 と言うことになります。 これを、ダブルクリックするのではなく、B1でsheet名を選択すると オートフィルターを適用するようにするには、どうしたらよいのでしょうか。 お願い致します。 WinXP Excel2003です。

  • エクセル マクロ:文字変更

    教えてください。 sheet5にデータがあります。 マクロを実行すると、一番右の列のセルに○があると●と書き換える 一番右の列のセルに△があると▲と書き換えるコードを作成しています。 下記のコードでは時間がかかってしまいます。 省略 If Sheets("sheet5").Cells(r, cmax).Value = "○" Then Sheets("sheet5").Cells(r, cmax).Value = "●" 省略 AutoFilterを使用してマクロを作成しましたが、列に○と△が両方無いと 範囲指定したセルがすべて▲となってしまいます。 下記コードをどのように手直ししたらよいのか教えて頂けないでしょうか。 よろしくお願いします。 Sub 文字変更() Dim c As Integer Dim cmax As Integer Dim rmax As Long With Sheets("sheet5") rmax = .Range("A3").End(xlDown).Row cmax = .Range("A3").End(xlToRight).Column .Rows("1:1").Select Selection.AutoFilter For c = 2 To cmax Selection.AutoFilter Field:=c, Criteria1:="○" .Cells(1, c).Offset(1, 0).Select .Range(Selection, Cells(rmax, c)).Value = "●" Selection.AutoFilter Field:=c, Criteria1:="△" .Cells(1, c).Offset(1, 0).Select .Range(Selection, Cells(rmax, c)).Value = "▲" Selection.AutoFilter Field:=c Next c End With Selection.AutoFilter End Sub

  • エクセルのマクロについて

    QNo.3421130で質問させて頂いた件の続きなのですが 入力シート(1)のA1に入力された値を、シート2のB1に表示(つまりB列の同じ行数のセルに表示)するというマクロをお教え頂き、早速実践してみましたが、入力シートA1に入っている値が入力シートA10から算出された値(例:A11に日付の2007/10/18と入っていて、A10にはMONTH関数で10だけを抽出している。そのA10の値10をA1が参照している状態やIF関数で反映された値等)がシート2に表示されません。 また本マクロは入力シート(1)とシート2の同じ行列のセルの表示しか出来ませんが、たとえば入力シート(1)のA2セルの値をシート2のB4に表示(任意で表示位置を変更する方法、シート2の反映セルを下へずらす等)が分りません。 以下、お教え頂いたマクロです。 Private Sub Worksheet_Change(ByVal Target As Range)  If Target.Column = 1 Then    Sheets("Sheet2").Cells(Target.Row, "B").Value = Target.Value  End If End Sub 続きの質問であることと、説明が分りにくく大変申し訳ありません。 非常に困っております。よろしくお願いします。

  • マクロ 並び替え エラーがでる

    マクロの記録で以下のようなマクロを作りましたが、実行するとエラー91「オブジェクト変数またはブロック変数が設定されていません」とでます。どう直したらよいでしょうか? Sub Macro6() Columns("A:L").Select Selection.AutoFilter ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Clear ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort.SortFields.Add Key:=Range _ ("A1:A497"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets("Sheet1").AutoFilter.Sort .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Range("B2").Select End Sub

  • エクセルのシートをコピーしたら、マクロが・・・

    こんにちは。 小さい図書室の運営をしている者です。 前回、こちらに質問を投稿したところ、とても役立つアドバイスを頂き、すぐに解決したので、今回も質問させていただきます。 今、図書の管理をすべてPCで行っています。 エクセルの「貸出管理」と言うブックで図書の貸出管理を行っています。 フィルタを使って図書の検索をした後、次に図書データを入力すべきセルにボタン一つで戻れるようにマクロを登録してあります。 このマクロを同じブック内の他のシートにコピーして使いたいのですが、コピーするとシートのテーブル名が変わってしまうためマクロでエラーが出てしまいます。 同じブック内の複数のシートでこのマクロを使う場合、いちいちシート名を変えなければならないのでしょうか?? もしくは、シートそれぞれに違うマクロを登録しなければならないのでしょうか?? ちなみに、登録されているマクロは次の通りです。 Sub 戻り() ' ' 戻り Macro ' ActiveSheet.ListObjects("テーブル2").Range.AutoFilter Field:=12 ActiveSheet.ListObjects("テーブル2").Range.AutoFilter Field:=10 ActiveSheet.ListObjects("テーブル2").Range.AutoFilter Field:=9 ActiveSheet.ListObjects("テーブル2").Range.AutoFilter Field:=7 ActiveSheet.ListObjects("テーブル2").Range.AutoFilter Field:=6 ActiveSheet.ListObjects("テーブル2").Range.AutoFilter Field:=4 ActiveSheet.ListObjects("テーブル2").Range.AutoFilter Field:=3 ActiveSheet.ListObjects("テーブル2").Range.AutoFilter Field:=2 ActiveSheet.ListObjects("テーブル2").Range.AutoFilter Field:=1 Range("テーブル2[貸出日]").Select Selection.End(xlDown).Select Selection.Offset(1, 0).Select End Sub この説明で分かって頂けますでしょうか?! どうか御回答お願いいたします!!

  • エクセルのマクロ

    選択状態にあるセル(どのセルも一文字のみ入力されている)に"●"以外が入力されていたら、全て消去する。 上記を実行するマクロとして以下を試してみましたが、うまくいきません。どこがおかしいのでしょうか? Sub test()  For Each cell In Selection   If Selection.Value <> "●" Then   Selection.ClearContents   End If  Next End Sub

  • excel マクロでの特殊文字入力方法

    マクロで特殊文字入力は出来ないのでしょうか? やりたい内容は、セルをダブルクリックした時に✓を表示させたいのです。 セルをダブルクリックした時に○を表示するマクロが、下記の通りである時、 ○の代わりに✓を表示させたいのですが、VBAで○の所に✓で書き換えると ?と表示されてしまいます。 Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) With Target If .Value = "○" Then .Value = "" Else .Value = "○" End If End With End Sub

専門家に質問してみよう