- ベストアンサー
エクセル マクロ ボタン
A1に入力規制のリストで10個ほどリストを作成し B1に日付を入力します。 C1に検索ボタンを作成します シートはいろいろ作成しておく シート名はリンゴ2017年6月27日と表記されている 他に〇〇日付で表記したシートを複数用意しています たとえばA1にリンゴとリストから選び、B1に2017年6月27日と 入力しC1のボタンを押すと D1にリンゴと日付が一致したシート名があればD1にシート名を表示する マクロを作りたいのですが、プログラムが全くわかりません 教えて頂けないでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
ちょぃと暇潰しに。 Dim myStr As String Dim Sh As Worksheet If Range("A1") = "" Or IsDate(Range("B1")) = False Then MsgBox ("値が不正です") Exit Sub End If myStr = Range("A1") & Format(Range("B1"), "yyyy年m月dd日") Range("D1").ClearContents For Each Sh In Worksheets If Sh.Name = myStr Then Range("D1") = myStr MsgBox ("見つかりました") Exit Sub End If Next MsgBox ("見つかりません") あ、前の回答でも言い忘れましたが、 日付は「yyyy年m月dd日」で考えてます。 意味はあまりないです。 って、もう見ないかもしれんけどねー(笑)。
その他の回答 (3)
- tsubu-yuki
- ベストアンサー率46% (179/386)
何を目的にしているか、イマイチ伝わってこなかったりします。 単純に、「該当シートが無かったら空白、在ったら指定文字列」 で、ここでいう「指定文字列」が仰る「〇〇日付」で良いのであれば D1セル:=IF(ISERROR(INDIRECT(A1&TEXT(B1,"YYYY年M月DD日")&"!A1")),"",A1&TEXT(B1,"YYYY年M月DD日")) というワークシート関数で十分対応できそうです。 マクロもボタンも必要ないです。 > プログラムが全くわかりません のなら、なおさらマクロはオススメしません。 ワークシート関数ならまだなんとか調べながら理解できるでしょうし、 あとのメンテナンスが楽です。 逆にマクロでやるにしても、そんなに難しくは無いです。 少し、勉強しておけば難なく作れるレベルです。 ※「そのほか」の処理が隠れていなければ、ですが。 流れは ・D1セルを消去 ・A1セルと日付文字列に直したB1セルを結合(A) ・全シートに対し ・シート名が(A)と合致しない⇒次のシートへ ・シート名が(A)合致した⇒D1セルにシート名を転記 (・ループを抜ける) 以上、ループ くらいですね。 関数でできる、と言い放った手前、細かい紹介はしませんが、 ほぼすべてインターネットで調べれば情報が出てきます。 出てこないのは「処理を入れたいブックの細かい情報」くらいですね。
お礼
ありがうございます 簡単にできました
- imogasi
- ベストアンサー率27% (4737/17070)
初心者らしく、長々書いているが、シートを、シート名(もちろん文字列で)を指定して、シートを選択したいだけではないのか。 シートSheet1にボタンを1つ設けて、そのクリックイベントに Sub ボタン1_Click() sn = InputBox("シート名") MsgBox sn Application.Goto Sheets(sn).Range("D5") End Sub ーー この後何がしたいのかはっきりさせてない。だから質問に答えにくい。 このブックの、シートの数もほぼ何十(何百)シートあるのか書いておくべきだろう。 ボタンを見えるようにする、シートSheet1を毎回選択しないとボタンが見えないが、この点手数。 ユーザーフォームを使って、選択したいシート名や、「探せ」の起動を掛けた方が便利だろうが、初心者では、今から勉強するのでは大変だろう。 ーー 質問のようなことは、VBAで中級程度に学習が進んで、VBAを使わないとスムーズにいかないだろう。 ======= 1つの方法 シートタブ部の左端の◀▶の間で右クリックすると「シートの選択」ウィンドウが出るから、シート名の一覧から選択して、そのシート名をクリック。 30シートぐらいまでなら便利かも。 参考 http://www.atmarkit.co.jp/fwin2k/win2ktips/897choosesheet/choosesheet.html
お礼
ありがうございます
- mt2015
- ベストアンサー率49% (258/524)
質問文では年月日の数字が全角になっていますが、半角で宜しいですよね? こんな感じでどうでしょう。 Sub Sample() Range("D1") = "" sSheetName = Range("A1").Value & Format(Range("B1").Value, "YYYY年M月D日") On Error GoTo ErrTrap nCount = Sheets(sSheetName).Index Range("D1") = sSheetName ErrTrap: On Error GoTo 0 End Sub
お礼
ありがうございます 簡単にできました
お礼
ありがうございます