• ベストアンサー

エクセル VBA

.Formulaにてセルに他ブック参照した数式を入力しているのですが、参照シート名が半角数字又は全角数字の場合があり、「シートの選択」ウインドウが表示されてしまいます。 数式はIFを使用してシート名が全角・半角どちらの場合でも問題ない数式を入力してるので、「シートの選択」をしなくても問題ありません。 DisplayAlertsをFalseにしても表示されてしまいます。 「シートの選択」ウィンドウを表示させない、又はOKまたはキャンセルをVBAで押すことはできないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
noname#255363
noname#255363
回答No.1

セルの再計算が実行されると存在しない参照先はファイルやシートの選択ウィンドウが出るので、正しく参照させるほうがいいのではないでしょうか。 現状は手動でセルにその関数を入れてもウィンドウが出るかと思います。 もしキャンセルを押させたいなら、強引ですがSendKeysとかですかね。結局後で再計算させたらまた出てきてしまうと思いますが。。

tsukajun
質問者

お礼

回答ありがとうございます。 SendKeysでは解消できませんでした。 参照先のファイルは複数人で使用しており、テンキーなしのPCなので半角のみで入力と指定しても全角入力する人がいた時の為に行いたかったのですが、やはり再計算等あるので「半角入力」の徹底をし、正しい参照先で入力するようにしようと思います。

関連するQ&A

  • Excel 2007 VBA にて式の入力方法不明

    VBAで式の入力方法がわかりません、教えていただけませんか? 当方初心者です。よろしくお願い致します。 別の、組合せSheetの U7 セルに 半角で 2012 と数字が入力してあります。 この数字を、 平成23年度 と表示が出来るようにしたいのです。 別のSheetの A1 セルに 下記の 数式をマクロで入力したいのですがうまくできません。 =" 平成"&JIS(組合せ!U7-1989)&"年度" マクロでは、 Range("A1").Formula = "=" 平成"&JIS(組合せ!U7-1989)&"年度"  と入力するのですが、うまく受け付けてくれません。

  • Excel のセルの書式設定について

    全角のアルファベットや数字を入力したら、強制的に半角になるようにしたいのですが、何か方法ありませんか? 文字列参照ではなく、入力した場所のセルの全角を半角に表示させたいのです。 よろしくお願い致します。

  • VBAの入力規則について質問です。

    VBAの入力規則について質問です。 Excelで、D列は全角50文字(半角100文字)以内の入力を可能とし、 それ以上の入力の場合、エラーを表示させたいと思います。 全角と半角をバイト数で判別し、以下のようなコードを考えましたが、 全角の場合しかうまくできません。 Private Sub Worksheet_Change(ByVal Target As Range) Dim ByteCount As Long ByteCount = LenB(StrConv(Target, vbFromUnicode)) If Target.Column = 4 Then Select Case ByteCount Case Is > 100 With Target.Validation .Add _ Type:=xlValidateTextLength, _ AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, Formula1:=1, Formula2:=100 .ErrorTitle = "入力エラー" .ErrorMessage = "全角50文字(半角100文字)以内で入力してください。" .IgnoreBlank = False End With Case 1 To 100 With Target.Validation .Add _ Type:=xlValidateTextLength, _ AlertStyle:=xlValidAlertStop, _ Operator:=xlBetween, Formula1:=1, Formula2:=50 .ErrorTitle = "入力エラー" .ErrorMessage = "全角50文字(半角100文字)以内で入力してください。" .IgnoreBlank = False End With End Select End If End Sub アドバイスをよろしくお願いいたします。

  • EXCELマクロで数行おきに繰り返す場合

    初歩的な質問なんでしょうが宜しく尾お願いします。 SHEET1上で、他のシートを参照して数式を入力するマクロですが 数行おきに入力していき、かつ参照するシートも数行おきとなる 場合の記述がよく分かりません。 Range("A2").Formula ="=IF($K$1>=3,SHEET2!H7,""-"")" Range("B2").Formula ="=IF($K$1>=6,SHEET2!IF7,""-"")" Range("A4").Formula ="=IF($K$1>=3,SHEET2!H12,""-"")" Range("B4").Formula ="=IF($K$1>=6,SHEET2!I12,""-"")" ・ ・ という感じで、2行おきのセルにシート「SHEET2」のセルを5行おきに 参照していきます。50回くらい(100行目迄繰り返すので簡単に記述で きないかと前半のRange("Ax").はForToで指定すればいいのかなと なんとなく想像はできるのですが、さらに入力する数式の行も 異なる間隔で可変させるという場合の記述が分かり分かりません。 素人で恐縮ですが教えて頂けませんか?

  • VBAの入力時に

    お世話になります。 エクセルでVBAのモジュールでセル名やシート名を入力しようと全角ひらがなにしようと思うのですが、半角英数しか表示してくれません。 VBAをとじて、一般のエクセルのモードに戻ると難なく入力できます。 以前はこんなことはなかったと思うのですが、何かの設定を触ってしまったのかもしれません。 VBA入力時に全角かなを入力するにはどうしたらいいのでしょうか?

  • エクセルVBA if、Elseifの使い方について

    調べたり、試行錯誤したのですが分からないので教えてください。 A列の最大値により表示されるメッセージを場合分けします。 (1)最大値が1~9の場合→「終了します」のメッセージを表示させる。 (2)最大値が0の場合  →「該当なし。シートを削除しますか?」のメッセージを表示させる。 (3)最大値が10の場合 →「すべて選択しています。シートを削除しますか?」のメッセージを表示させる。 メッセージをクリックした結果 (1)「はい」をクリックして終了。 (2)「はい」をクリックすれば、シートを削除。「いいえ」をクリックして終了。 (3)「はい」をクリックすれば、シートを削除。「いいえ」をクリックして終了。 'メッセージ Dim maxval As Long maxval = Application.Max(sheet1.Range("A:A")) If maxval >= 1 And maxval <= 9 Then MsgBox " 終了します" ElseIf maxval = 0 And vbYes = MsgBox("該当なし。シートを削除しますか?", vbYesNo) Then Application.DisplayAlerts = False sheet1.Delete Application.DisplayAlerts = True ElseIf maxval = 10 And vbYes = MsgBox("すべて選択しています。シートを削除しますか?", vbYesNo) Then Application.DisplayAlerts = False sheet1.Delete Application.DisplayAlerts = True End If End Sub (1)最大値が1~9の場合は成功します。 (2)(3)最大値が0の場合や10の場合に、「該当なし。シートを削除しますか?」と「すべて選択しています。シートを削除しますか?」の両方が、表示されてしまいます。 (2)(3)の場合に、それぞれのメッセージしか表示されないようにするにはどうしたらよいのでしょうか。 よろしくお願いします。

  • Excel VBAでのシートの削除について

    Excel VBAで、シート上に配置されたボタンをクリックすることで、メッセージを出さずにそのシートの削除をしたいと思っています。 サンプルとして、シート上(例えばSheet1)にボタンを1個配置し、 ------------------------------------------------------- Private Sub CommandButton1_Click() Application.DisplayAlerts = False Delete Application.DisplayAlerts = True End Sub ------------------------------------------------------- のようにすると、オートメーションエラーが起きます。 そこで、 Application.DisplayAlerts = True をコメントアウトしてやれば実行はできるのですが、その後別のシートで処理を行う場合には、再度メッセージを表示してほしいと思っています。 ためしに、Sheet1削除後にアクティブになるSheet2に次のようなコードを記述しました。Sheet1同様、シート上にボタンを1個配置しています。 ------------------------------------------------------- Private Sub CommandButton1_Click() MsgBox Application.DisplayAlerts End Sub Private Sub Worksheet_Activate() MsgBox "次に出るメッセージはアクティブ直後のDisplayAlerts設定。" MsgBox Application.DisplayAlerts Application.DisplayAlerts = True MsgBox "次に出るメッセージは変更後のDisplayAlerts設定。" MsgBox Application.DisplayAlerts End Sub ------------------------------------------------------- こうすれば、Sheet1削除後、アクティブになった直後はDisplayAlertsがFalse。その後設定変更してTrueになるかとおもったのですが、結果はFalseでした。しかしその後、ボタンをクリックするとTrueが返ってきました。 いろいろ調べましたが、なぜこのような結果になるのかわかりません。よろしくお願いいたします。

  • エクセルの設定について

    エクセルで試験の案内表を作っています。 そこに時刻を打てるようにしたいのです。 例えば、AM 10:00と記入したいとすると AM/10/:/00それぞれ1マスずつ入力できるようにしたいです。 上司から数字の部分は半角で打っても表示されるのは 全角で表示されるように設定してと言われました。 セルの書式設定で文字列に設定しましたが、30など10の位に数字があれば 半角で記入しても全角で30と表示されました。 しかし00は0になってしまいます。 また、[DBNum3]00と入力するとできると以前教えてもらいました。 その方法は何も設定していない場合、その通りにできるのですが 私のエクセルのシートには下記のような設定があります。 1.シートAとBで=で反映されるようになっています。 2.シートAのマスをシートBのマスに反映させると“0”と表示されてしまうので   0と表示されない設定がしてあります。 3.記入が必要なマスには色づけがしてあり、必要事項を打つと色が消えるようにしてあります。 1~3の設定をそのままに半角の00を00と全角で表示されるようにできますか? PCに詳しくないので手順なども教えて頂けると嬉しいです。 上司から言われたことは (1)記入しなければいけない所はマスに色付けし、打ったら色が消えるようにする。 (2)数字は半角で記入してもすべて全角で表示されるようにする。   上記で質問した時刻の分の部分が00になるほか、電話番号の市外局番も   0から始まりますが記入したら全角になるようにする。 (3)シート1と2が反映されるように=で設定しておく。 (4)=で設定したマスに0が表示されないようにする。 専門用語が分からず説明が長くなってしまいました。 手順など詳しく教えていただけると嬉しいです。 

  • [EXCEL2007]VBAからの別ブック参照VLOOKUPについて

    初めまして。 EXCEL2007で、VBAからFORMULA式を使って別ブックを参照するVLOOKUPを埋め込もうとしています。 このとき、対象となる別ブックのシートに、検索値に合致する情報がないと、「シートの選択」ダイアログが出てしまうのですが、これを出さずに、式を生かしたまま「#N/A」扱いにする(=ワークシート上でVLOOKUPに失敗したときと同じ結果とする)方法はないでしょうか? いろいろ試したのですが解決策が見つかりませんでした。 実装コードはつぎのような形になってます。 Sheet1.Formula = "=VLOOKUP(B2,'[Book2.xls]Sheet1!$B1:$C255,2,FALSE)" Book2のSheet1のB1:C255に、検索キー[B2]の値があるとき、C列の値を取ろうとしています。 このとき、検索に失敗すると、コード実行中に「シートの選択」ダイアログが出てしまうので、これを回避したいのが質問の主題です。 Application.DisplayAlerts = FALSE でもダメでした。 なにか良いアイデアがありましたらご教唆願います。

  • エクセルの全角数字

    エクセルで全角の数字を入力するのは可能でしょうか? 決定するまでは、全角で表示されているのですが、 エンターキーを押すと半角になってしまいます。 数字を入れる前に「’」を入れると 全角表示になるのですが、 そうすると計算式には反映されないようです。 どうしたらいいのでしょうか。

専門家に質問してみよう