watabe007 の回答履歴
- マクロ実行時のエラー処理について
VBAのエラー処理の方法について教えて下さい。 エクセル2007を使用しています。 VBAでシートの名前を以下のように変更しようとしています。 シート名1 ← "1" シート名2 ← "2" シート名3 ← "3" 記述内容は以下の通りです。 '〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 On Error GoTo Err1 For i = 1 to 3 Sheet(i).Name = i 'Sheet(i)の名前を変数"i"に変更する。 Err1: Sheet(i).Delete '上記処理でエラーが発生した場合はそのシートを削除する。 Next i '〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 以上の処理を実行しようとした場合、同じ名前の既存シートが存在していたり、シート名に含まれてはいけない文字列が含まれていたりした場合、エラーが発生しますが、On Errorステートメントを使用してエラーが発生した場合の処理を実行したいのですが、1回目のエラーについてはOn Errorが働くのですが、2回目になるとOn Errorが働きません。 2回目以降のエラーも1回目と同様に処理したいのですが、コードの記述の変更方法や又は他の処理方法を教えて下さい。 エラーの種類は以下の通りです。 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 実行時エラー'1004': シートの名前をほかのシート、Visual Basicで参照されるオブジェクト ライブラリまたは ワークシートを同じ名前に変更することはできません。 〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓 以上。 尚、On Error Resume Nextは処理を無視するだけなので使用したくありません。 以上、宜しくお願い致します。
- 0から始まる文字の表示で質問
桁数が変動しても0から表示させる事は出きるのでしょうか 現在はとりあえず4桁が多いので初期値を下記に設定しています [DBNum3][$-411]0000 #1、2~4桁内で変動可能な0から大文字表示の定義がありましたら御願い致します。 #2、例1Xの部分が2~4桁の範囲で変動する#1同様の定義をお願いします 例1 XX-0000~XXXX-0000
- 締切済み
- DIYsitumon
- オフィス系ソフト
- 回答数1
- マクロの変更の仕方を教えて下さい。
前任者の作ったエクセルの表を使っています。商品販売と計算の2種類のシートがあります。商品販売にはマクロに関係する集計とクリアの二つのボタンが作られてあります。教えて頂きたい何点かがあるのですが、最初にクリアのマクロの変更をお願いします。 商品販売のエクセルの行数を現在の300行から600行に増やしたいのです。エクセルの表は増やせるのですが、マクロは単に300の数字を600に訂正するだけでいいのか分かりません。是非教えて下さい。 Range("A6:B300,E6:E300,G6:G300,I6:I300").Select Range("I6").Activate Selection.ClearContents Sheets("計算シート").Select ActiveWindow.SmallScroll Doun:=-15 Range("T3:AI297").Select Selection.ClearContents ActiveWindow.SmallScroll Down:=-231 ActiveWindow.ScrollRow=55 ActiveWindow.ScrollRow=54 と55 54 53 52 49 46と数字が不規則に小さくなりながら続き、最後は3で終わり ActiveWindow.ScrollRow=3 Range("R2").Select Sheets("商品販売").Select Range("I1").Select ActiveWindow.ScrollRow=295 ActiveWindow.ScrollRow=294 と今度は295 294 292 291 288 285 279とまた数字が続き 最後は ActiveWindow.ScrollRow=6 Range("I2").Select End Sub ActiveWindow.ScrollRow= の数字の意味が全く分かりません。構わずに最初の300→600の訂正だけで大丈夫でしょうか?
- ベストアンサー
- noname#194447
- オフィス系ソフト
- 回答数4
- マクロの変更の仕方を教えて下さい。
前任者の作ったエクセルの表を使っています。商品販売と計算の2種類のシートがあります。商品販売にはマクロに関係する集計とクリアの二つのボタンが作られてあります。教えて頂きたい何点かがあるのですが、最初にクリアのマクロの変更をお願いします。 商品販売のエクセルの行数を現在の300行から600行に増やしたいのです。エクセルの表は増やせるのですが、マクロは単に300の数字を600に訂正するだけでいいのか分かりません。是非教えて下さい。 Range("A6:B300,E6:E300,G6:G300,I6:I300").Select Range("I6").Activate Selection.ClearContents Sheets("計算シート").Select ActiveWindow.SmallScroll Doun:=-15 Range("T3:AI297").Select Selection.ClearContents ActiveWindow.SmallScroll Down:=-231 ActiveWindow.ScrollRow=55 ActiveWindow.ScrollRow=54 と55 54 53 52 49 46と数字が不規則に小さくなりながら続き、最後は3で終わり ActiveWindow.ScrollRow=3 Range("R2").Select Sheets("商品販売").Select Range("I1").Select ActiveWindow.ScrollRow=295 ActiveWindow.ScrollRow=294 と今度は295 294 292 291 288 285 279とまた数字が続き 最後は ActiveWindow.ScrollRow=6 Range("I2").Select End Sub ActiveWindow.ScrollRow= の数字の意味が全く分かりません。構わずに最初の300→600の訂正だけで大丈夫でしょうか?
- ベストアンサー
- noname#194447
- オフィス系ソフト
- 回答数4
- VBA 空白をエラー表示させる!
ボタンをクリックすると、入力ミスがないように MsgBoxで表示させるものを作りましたが TextBox3を都合のため切り取りました! そしたら、エラー表示され If Controls("TextBox" & i).Text = "" Then ↑黄色く表示されます! どのように下の記述を変えれば良いか教えてください! Private Sub CommandButton5_Click() Dim i As Integer For i = 1 To 9 If Controls("TextBox" & i).Text = "" Then MsgBox "判定入力していない項目がありますよ!", vbInformation, "空欄を見て!" Exit Sub End If Next If MsgBox("記録するよ?", vbOKCancel) = vbOK Then With Worksheets("グラフ") 'アセスメント身体 .Range("U2").Value = TextBox1.Value .Range("U3").Value = TextBox2.Value .Range("U4").Value = TextBox3.Value .Range("U5").Value = TextBox4.Value .Range("U6").Value = TextBox5.Value .Range("U7").Value = TextBox6.Value .Range("U8").Value = TextBox7.Value .Range("U9").Value = TextBox8.Value .Range("U10").Value = TextBox9.Value
- ご教授願います。
ちょっと行き詰ったので、どなたかご教授願います。 あるセルにデータの入力規則でプルダウンの選択事項が表示されるようにしました。 次にVBAで色々記録できるマクロを組みました。 マクロの記録先を先ほどプルダウンで選択したシートに転送させたいのです。 プルダウンの選択事項は12個、シートは4個。 どういうことかといいますと、 例えば、プルダウン選択事項が「あ い う か き く さ し す た ち つ」 とかの場合だと「あ~う」を選択した場合は「あ行」のシートへ。 「か~く」は「か行」 「さ~す」は「さ行」 「た~つ」は「た行」へとしたいのです。 プルダウン内容に例の様に順番に並んでいる場合でしたらできそうなのですが、これが入り混じっている場合どうすればいいのかわかりません。「あ か つ た う い き ち・・・」のように。 プルダウンの順番方法はできれば変えたくありませんのでどなたかわかる方ご教授ください。
- 締切済み
- stan1225
- Visual Basic
- 回答数2
- Excel VBA 1行にあるすべての項目の検索
いつもお世話になっております。 Excel97 VBA に関しての質問です。 Excelシート内のある1行に存在する項目から特定の項目を検索する方法ってありませんか? <例> A B C D E F --------------------------- 1|会社 社員 番号 住所 番号 備考 というようなExcelになったってたとして、 Range("1").Search("住所") みたいな、一行目にある"住所"って項目があるかないかを判断できる方法ってないですかね? ※上記プログラムは適当ですw どなたかご教授願います><
- ベストアンサー
- liberty01
- その他(プログラミング・開発)
- 回答数3
- ランダム関数
ご教授お願いいたします。 現在エクセル2007で正の表があり、それに ランダム関数を使った表を作成しました。 そして、そのランダム表と正の表が一致した 回数を調査するエクセルを同一シートに 作成しました。しかし、この方法だと キーボードのF9を毎回押していないと 更新されないので、常に監視していないと 難しいです。 そこで、F9を押すマクロを一回作成したのですが そこから先で、そのマクロを一回実行すると 永久的に、処理し続ける方法はありませんか? また、追加ですがその処理中に一致回数が任意の 回数以上になったら中断でくる機能もご教授 いただけたら幸いです。 なお、この方法以外の作成方法がございましたら さらにご回答をお願いいたします。 以上
- ベストアンサー
- zeak00
- Visual Basic
- 回答数1
- VBScriptが実行中であるのを明示的にするために、何か表示しておきたい
VBScriptが実行中であるのを明示的にするために、何か表示しておきたいのですが、 なにかいい方法はないでしょうか?
- ベストアンサー
- tuiju
- その他(プログラミング・開発)
- 回答数2
- エクセルで数式を入れても値が空欄になります
タイトルの通りなのですが、 エクセルに数式を入れてもセルが空欄になって値が表示されません。 全く同じ数式を他のセルに入れると値が表示されるので 数式が間違っていることはないと思われます。 また、空欄になって値が表示されないセルにマウスをあてると 数式自体は入ってます。 時々、このような事象が起きるのですが どうやって改善すれば良いでしょうか?
- エクセル VBA for文について
再び失礼します。 昨日VBAを始めた初心者です。 1、チェックボタン17個にそれぞれ変数を設定 2、2つだけチェックを入れると仮定して、実行ボタンを押したときに チェックが入っている2つの中で変数の大きいものをMax、小さいものをMinとしてシートに出力したいのですが、”ここ”と書いてあるところに Me("hensuu" & n). hensuu & n など入れてみたのですがエラーになります。 くだらないミスだと思いますがよくわかりません。 どなたかご教授お願いします。 Private Sub CommandButton2_Click() If Check1.Value = True Then hensuu1 = "9" End If If Check2.Value = True Then hensuu2 = "8" End If If Check3.Value = True Then hensuu3 = "7" End If If Check4.Value = True Then hensuu4 = "6" End If If Check5.Value = True Then hensuu5 = "5" End If If Check6.Value = True Then hensuu6 = "4" End If If Check7.Value = True Then hensuu7 = "3" End If If Check8.Value = True Then hensuu8 = "2" End If If Check9.Value = True Then hensuu9 = "1" End If If Check11.Value = True Then hensuu10 = "1/2" End If If Check11.Value = True Then hensuu11 = "1/3" End If If Check12.Value = True Then hensuu12 = "1/4" End If If Check13.Value = True Then hensuu13 = "1/5" End If If Check14.Value = True Then hensuu14 = "1/6" End If If Check15.Value = True Then hensuu15 = "1/7" End If If Check16.Value = True Then hensuu16 = "1/8" End If If Check14.Value = True Then hensuu17 = "1/9" End If Dim n As Long Dim Max As Long Dim Min As Long For n = 1 To 17 If Me("Check" & n).Value = True Then Max = ”ここ” If Me("Check" & n).Value = True Then Exit For Next n For n = Max To 17 If Me("Check" & n).Value = True Then Min = ”ここ” If Me("Check" & n).Value = True Then Exit For Next n Worksheets("Sheet1").Range("A1") = Min Worksheets("Sheet1").Range("B1") = Max MsgBox hensuu End Sub
- 別のシートを参照して計算する方法
質問です。 シート1に数値が入力してあり、そこで計算した結果をシート2に貼り付けるにはどのようにすればいいのでしょうか? Worksheets("シート2").Cells(3 + g, 3 * c) = _ Worksheets("シート1").Select.WorksheetFunction._ Average(Range(Cells(e, g + 2), Cells(f, g + 2))) と書いたのですが、上手くいきません。 おそらく Worksheets("シート1").Select.WorksheetFunction._ Average(Range(Cells(e, g + 2), Cells(f, g + 2))) の部分がおかしいと思うのですが、どうすればよいでしょうか? よろしくお願いします。
- ベストアンサー
- 322444
- Visual Basic
- 回答数2
- VBAでコピーモードを解除すると一緒にクリップボードの中身も消えてしまう・・・
エクセルのVBAでコピーモードを解除(Application.CutCopyMode = False) すると一緒にクリッポボードの文字が消えてしまいます。 外部入力したいので、点滅している枠線だけを元に戻してクリップボード内の文字はそのままにしておきたいのですが何か方法はありますか?
- エクセルマクロ非表示セル検索法について
Findメソッドでセルを検索し、行及び列番号を求めたいのですが、セルを非表示にしておくと検索できず求めることが出来ません。 非表示セルも可能にするにはどうすれば良いのですか? 列番号 = Cells.Find("キー").Column ' 失敗 列番号 = Rows(1).Find("キー").Column ' 失敗
- ベストアンサー
- essentieel
- その他(プログラミング・開発)
- 回答数3
- エクセル 擬似カレンダーコントロール
こんにちは!いつも拝見しています。今回はカレンダーコントロール(擬似)について教えていただきたく思います。アクセスの環境がなくユーザーフォームからカレンダーコントロールを作りました。作ったと言うか写しただけですが、今はメッセージBOXで表示されて終わりです。シート1のA1セルに表示させるにはどうしたらいいでしょうか。 どうぞ宜しくお願いします。 Private Sub LabelClickEvent_Click() Dim Conm As String, Nen As Long, Tuki As Long Conm = LabelClickEvent.Name With UserForm1 .Controls(Conm).SpecialEffect = fmSpecialEffectSunken With .Controls("ComboBox1") If .ListIndex >= 0 Then Nen = .List(.ListIndex) End If End With With .Controls("ComboBox2") If .ListIndex >= 0 Then Tuki = .List(.ListIndex) End If End With MsgBox Format(Nen & "/" & Tuki & "/" & LabelClickEvent.Caption, _ "ggge年m月d日 (aaa)"), , "選択した日付" .Controls(Conm).SpecialEffect = fmSpecialEffectEtched End With End Sub
- ベストアンサー
- samohankin
- Visual Basic
- 回答数2
- 計算結果で音を1回で止める方法を教えてください。
以前、こちらで教えてもらったものを使わせてもらっているんですが、 これを少し改造したいんですが、色々イジってもわかりませんでしたのでご教授ください。 下記の式だと、A3やA7の計算結果で、注文数が在庫数を超えると セルの表示が変わり、各種設定した各フルーツ追加の音が鳴る設定なんですが、 例えばブドウ注文数4個になり、ブドウ在庫数3個を超えると セルの表示がブドウ追加となり、ブドウ追加!と音が鳴るんですが、 更にブドウが5個6個と追加されると、ずっとブドウ追加!と音が鳴り続けます。 これをブドウ追加!と音が鳴ったら、それでブドウ追加音は鳴らないようにしたいんです。 バナナが追加状態になった場合も、バナナ追加!と1回鳴って、 それ以降、バナナ追加が続いても音は終了と。 つまりA3やA7の計算結果1個につき、1回で音は終了にしたいんです。 ◆Excel2003のBOOK1の中で セル A1 ブドウ注文数2個(RSSによりランダムでリアルタイムで変わる) A2 ブドウ在庫数3個(固定数字) A3 =IF(A1>A2,"ブドウ追加"&PlayWave("C:\Sound\ブドウ追加音.wav"),"在庫あり") A5 バナナ注文数2個(RSSによりランダムでリアルタイムで変わる) A6 バナナ在庫数3個(固定数字) A7 =IF(A5>A6,"ブドウ追加"&PlayWave("C:\Sound\ブドウ追加音.wav"),"在庫あり") ◆標準モジュールに以下を書いています。 ' ※以下標準モジュールに貼り付けるユーザー定義関数 ' // Wave ファイルを再生する API ' // 複数の WAV の同時再生はできない。同期再生の場合は、 ' // 再生終了まで一切の操作ができない。 ' Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" ( _ ByVal lpszName As String, _ ByVal hModule As Long, _ ByVal dwFlags As Long) As Long Private Const SND_SYNC As Long = &H0 ' 同期再生 Private Const SND_ASYNC As Long = &H1 ' 非同期再生 Private Const SND_PURGE As Long = &H40 ' 再生停止 ' // Wave ファイルを再生する. ' Public Function PlayWave(ByVal WaveFileName As String) As String ' @引数 WaveFileName : 再生する Wave ファイル名 ' 必ず長さ0の文字列を返す Call PlaySound(WaveFileName, 0&, SND_SYNC) PlayWave = vbNullString End Function
- 計算結果で音を1回で止める方法を教えてください。
以前、こちらで教えてもらったものを使わせてもらっているんですが、 これを少し改造したいんですが、色々イジってもわかりませんでしたのでご教授ください。 下記の式だと、A3やA7の計算結果で、注文数が在庫数を超えると セルの表示が変わり、各種設定した各フルーツ追加の音が鳴る設定なんですが、 例えばブドウ注文数4個になり、ブドウ在庫数3個を超えると セルの表示がブドウ追加となり、ブドウ追加!と音が鳴るんですが、 更にブドウが5個6個と追加されると、ずっとブドウ追加!と音が鳴り続けます。 これをブドウ追加!と音が鳴ったら、それでブドウ追加音は鳴らないようにしたいんです。 バナナが追加状態になった場合も、バナナ追加!と1回鳴って、 それ以降、バナナ追加が続いても音は終了と。 つまりA3やA7の計算結果1個につき、1回で音は終了にしたいんです。 ◆Excel2003のBOOK1の中で セル A1 ブドウ注文数2個(RSSによりランダムでリアルタイムで変わる) A2 ブドウ在庫数3個(固定数字) A3 =IF(A1>A2,"ブドウ追加"&PlayWave("C:\Sound\ブドウ追加音.wav"),"在庫あり") A5 バナナ注文数2個(RSSによりランダムでリアルタイムで変わる) A6 バナナ在庫数3個(固定数字) A7 =IF(A5>A6,"ブドウ追加"&PlayWave("C:\Sound\ブドウ追加音.wav"),"在庫あり") ◆標準モジュールに以下を書いています。 ' ※以下標準モジュールに貼り付けるユーザー定義関数 ' // Wave ファイルを再生する API ' // 複数の WAV の同時再生はできない。同期再生の場合は、 ' // 再生終了まで一切の操作ができない。 ' Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" ( _ ByVal lpszName As String, _ ByVal hModule As Long, _ ByVal dwFlags As Long) As Long Private Const SND_SYNC As Long = &H0 ' 同期再生 Private Const SND_ASYNC As Long = &H1 ' 非同期再生 Private Const SND_PURGE As Long = &H40 ' 再生停止 ' // Wave ファイルを再生する. ' Public Function PlayWave(ByVal WaveFileName As String) As String ' @引数 WaveFileName : 再生する Wave ファイル名 ' 必ず長さ0の文字列を返す Call PlaySound(WaveFileName, 0&, SND_SYNC) PlayWave = vbNullString End Function
- 計算結果で音を1回で止める方法を教えてください。
以前、こちらで教えてもらったものを使わせてもらっているんですが、 これを少し改造したいんですが、色々イジってもわかりませんでしたのでご教授ください。 下記の式だと、A3やA7の計算結果で、注文数が在庫数を超えると セルの表示が変わり、各種設定した各フルーツ追加の音が鳴る設定なんですが、 例えばブドウ注文数4個になり、ブドウ在庫数3個を超えると セルの表示がブドウ追加となり、ブドウ追加!と音が鳴るんですが、 更にブドウが5個6個と追加されると、ずっとブドウ追加!と音が鳴り続けます。 これをブドウ追加!と音が鳴ったら、それでブドウ追加音は鳴らないようにしたいんです。 バナナが追加状態になった場合も、バナナ追加!と1回鳴って、 それ以降、バナナ追加が続いても音は終了と。 つまりA3やA7の計算結果1個につき、1回で音は終了にしたいんです。 ◆Excel2003のBOOK1の中で セル A1 ブドウ注文数2個(RSSによりランダムでリアルタイムで変わる) A2 ブドウ在庫数3個(固定数字) A3 =IF(A1>A2,"ブドウ追加"&PlayWave("C:\Sound\ブドウ追加音.wav"),"在庫あり") A5 バナナ注文数2個(RSSによりランダムでリアルタイムで変わる) A6 バナナ在庫数3個(固定数字) A7 =IF(A5>A6,"ブドウ追加"&PlayWave("C:\Sound\ブドウ追加音.wav"),"在庫あり") ◆標準モジュールに以下を書いています。 ' ※以下標準モジュールに貼り付けるユーザー定義関数 ' // Wave ファイルを再生する API ' // 複数の WAV の同時再生はできない。同期再生の場合は、 ' // 再生終了まで一切の操作ができない。 ' Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" ( _ ByVal lpszName As String, _ ByVal hModule As Long, _ ByVal dwFlags As Long) As Long Private Const SND_SYNC As Long = &H0 ' 同期再生 Private Const SND_ASYNC As Long = &H1 ' 非同期再生 Private Const SND_PURGE As Long = &H40 ' 再生停止 ' // Wave ファイルを再生する. ' Public Function PlayWave(ByVal WaveFileName As String) As String ' @引数 WaveFileName : 再生する Wave ファイル名 ' 必ず長さ0の文字列を返す Call PlaySound(WaveFileName, 0&, SND_SYNC) PlayWave = vbNullString End Function
- 計算結果で音を1回で止める方法を教えてください。
以前、こちらで教えてもらったものを使わせてもらっているんですが、 これを少し改造したいんですが、色々イジってもわかりませんでしたのでご教授ください。 下記の式だと、A3やA7の計算結果で、注文数が在庫数を超えると セルの表示が変わり、各種設定した各フルーツ追加の音が鳴る設定なんですが、 例えばブドウ注文数4個になり、ブドウ在庫数3個を超えると セルの表示がブドウ追加となり、ブドウ追加!と音が鳴るんですが、 更にブドウが5個6個と追加されると、ずっとブドウ追加!と音が鳴り続けます。 これをブドウ追加!と音が鳴ったら、それでブドウ追加音は鳴らないようにしたいんです。 バナナが追加状態になった場合も、バナナ追加!と1回鳴って、 それ以降、バナナ追加が続いても音は終了と。 つまりA3やA7の計算結果1個につき、1回で音は終了にしたいんです。 ◆Excel2003のBOOK1の中で セル A1 ブドウ注文数2個(RSSによりランダムでリアルタイムで変わる) A2 ブドウ在庫数3個(固定数字) A3 =IF(A1>A2,"ブドウ追加"&PlayWave("C:\Sound\ブドウ追加音.wav"),"在庫あり") A5 バナナ注文数2個(RSSによりランダムでリアルタイムで変わる) A6 バナナ在庫数3個(固定数字) A7 =IF(A5>A6,"ブドウ追加"&PlayWave("C:\Sound\ブドウ追加音.wav"),"在庫あり") ◆標準モジュールに以下を書いています。 ' ※以下標準モジュールに貼り付けるユーザー定義関数 ' // Wave ファイルを再生する API ' // 複数の WAV の同時再生はできない。同期再生の場合は、 ' // 再生終了まで一切の操作ができない。 ' Private Declare Function PlaySound Lib "winmm.dll" Alias "PlaySoundA" ( _ ByVal lpszName As String, _ ByVal hModule As Long, _ ByVal dwFlags As Long) As Long Private Const SND_SYNC As Long = &H0 ' 同期再生 Private Const SND_ASYNC As Long = &H1 ' 非同期再生 Private Const SND_PURGE As Long = &H40 ' 再生停止 ' // Wave ファイルを再生する. ' Public Function PlayWave(ByVal WaveFileName As String) As String ' @引数 WaveFileName : 再生する Wave ファイル名 ' 必ず長さ0の文字列を返す Call PlaySound(WaveFileName, 0&, SND_SYNC) PlayWave = vbNullString End Function
- エクセル IF文について
お世話になります F10に下記数式が入ってます =IF(E10="","",VLOOKUP(E10,$AA$10:$AB$19,2,0)) E10は通常数字ですが文字が入る時があります この場合E10を検索して もし文字ならE10に空白を返したいのですが? そのような事ができますか? よろしくお願いいたします