ushi2015 の回答履歴
- エクセルマクロ 特定の文字入力の際の処理(2)
お世話になります。 以前、下記質問をし、締め切ったのですが、もう一点、教えていただきたい点がありました。 質問 エクセルマクロで、sheet1のE列の6~30行に指定する文字が入力された際、 B列のその同じ行にある文字を取得し、その取得した文字をsheet3のC6から K6まで書き出していきたいのですが、どのようにしたらよいでしょうか? ご回答 Private Sub Worksheet_Change(ByVal Target As Range) Dim i As Long Dim r As Range Const 指定文字 As String = "X" Set r = Range("E6:E30") If Target.Count > 1 Then Exit Sub If Intersect(r, Target) Is Nothing Then Exit Sub End If If Target.Value <> 指定文字 Then Exit Sub Else '大文字小文字を区別する場合 i = ActiveSheet.Evaluate( _ "SumProduct(EXACT(" & r.Address & ",""" & 指定文字 & """)*1)") '大文字小文字を区別しない場合 i = WorksheetFunction.CountIf(r, 指定文字) Application.EnableEvents = False Worksheets("Sheet3").Cells(6, i + 2) = _ Target.Offset(, -3) Application.EnableEvents = True End If End Sub このご回答を、 取得した文字をsheet3のC6からK6までに4列毎に書き出して いく場合にはコードをどのようにしていけば良いのでしょうか。 C6→H6→M6→・・・ すみません、再度お願い致します。
- ベストアンサー
- Excel(エクセル)
- na714
- 回答数2
- エクセル外部リンクのセル番地まで知る方法
エクセル2013です。他のエクセルブックからリンクを張っているとき、以下のマクロで調べることがわかりましたけど、そこでわかるのは、ブック名どまりであって、シートやセル番地はわかりません。わかりたいのは、こっちのブックのどのシートのどのセルが、あっちのブックのどのシートのどのセルとつながっているかです。 わかる方法はないものでしょうか。なお、このマクロは、以下のホームページに書いてあったものです。 https://www.moug.net/tech/exvba/0060039.html Sub GetLinkInfromation() Dim Var As Variant Dim Msg As String Dim i As Integer Var = ActiveWorkbook.LinkSources(xlExcelLinks) For i = 1 To UBound(Var) Msg = Msg & Var(i) & vbCrLf Next i MsgBox Msg End Sub
- ベストアンサー
- Excel(エクセル)
- kiki2926
- 回答数2
- aタグにalt要素があるかどうかを取得するには
For Each myObj In objIE.document.all.tags("a") If myObj.alt = "文字" Then End If Next の様に、IEをVBAで操作する際に、altの値は取得できないのでしょうか? 実際上記のコードを実行すると 実行時エラー '438' オブジェクトは、このプロパティまたはメソッドをサポートしていません。 になります。 それともloop中のaタグにalt要素がないからエラーになっているのでしょうか? であれば、aタグにalt要素があるかどうかを取得するにはどうすればいいでしょうか? 出来ればIfステートメントで取得したいです。
- ベストアンサー
- Visual Basic
- qdvzurnhz
- 回答数2
- エクセルマクロ 特定の文字入力の際の処理
お世話になります。 エクセルマクロで、sheet1のE列の6~30行に指定する文字が入力された際、 B列のその同じ行にある文字を取得し、その取得した文字をsheet3のC6から K6まで書き出していきたいのですが、どのようにしたらよいでしょうか? if関数も考えましたが、条件の設定に困ってしまいます。 マクロで良い方法があれば教えていただけると助かります。
- ベストアンサー
- Excel(エクセル)
- na714
- 回答数3
- エクセルマクロ 特定の文字入力の際の処理
お世話になります。 エクセルマクロで、sheet1のE列の6~30行に指定する文字が入力された際、 B列のその同じ行にある文字を取得し、その取得した文字をsheet3のC6から K6まで書き出していきたいのですが、どのようにしたらよいでしょうか? if関数も考えましたが、条件の設定に困ってしまいます。 マクロで良い方法があれば教えていただけると助かります。
- ベストアンサー
- Excel(エクセル)
- na714
- 回答数3
- ファイル入力画面からファイル名を入れて継続して動作
excel vbaで、他のEXCELファイルのマクロの処理を中断して、自己ファイルのマクロを処理後、再度他のEXCELファイルのマクロを継続して再度処理を行わせるにはどうすれば良いですか。教えて下さい 他のEXCELファイルとして、フリーソフトを利用しています。 そのソフトは、モジュールにロックが掛ってるので、その中のマクロなどを編集することはできません。(ロック解除などは考えていません。) そのソフトを起動して、データファイル入力画面で、データファイルを入力して、処理をして、処理結果を保存することを、入力データファイルを変えながら、繰り返し行いたいです。 そこで、処理マクロを作成しています。その手順とVBAを説明します。 1)フリーソフトを開き、 2)そのフリーソフトのシート内のボタンを、VBAで、マウスカーソルを移動させて、マウスのキー操作で、「押す」「離す」を行い、 3)ファイルの初期化の問合せの警告が出るので、キー操作で、「Y」を押し、 4)データファイルの名称をクリップボードにコピーし 5)EXCELのカレントフォルダを、データファイルのあるフォルダに変えて 6)DoEventsとして、フリーソフトのデータファイル入力画面を開いています。 この時、画面のポインタは、データ入力画面のファイル名入力欄にあり、 この後、データファイル名をクリップボードから入力したいので、 キー操作で、「crtl+v」としたいのですが フリーソフトのマクロが起動中で、作成している処理マクロに制御が移らないためと思いますが 入力できません。(人手での入力は可能ですが)、自動化したいので、どの様にすれば良いか教えて下さい。 マクロは長いので、抜粋して記載します。 sub a() (宣言文省略します。) Workbooks.Open freesoft Dim mPSet As Long mPSet = SetCursorPos(b,c) Call mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0) Call mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0) keybd_event VK_Y, 0, fKEYDOWN, 0 keybd_event VK_Y, 0, fKEYUP, 0 Application.CutCopyMode = False Dim d As New DataObject With d .SetText e .PutInClipboard End With ChDrive f ChDir g DoEvents (ここで、止まります。) With d .GetFromClipboard .GetText End With keybd_event VK_RETURN, 0, fKEYDOWN, 0 keybd_event VK_RETURN, 0, fKEYUP, 0 DoEvents Dim mPSet2 As Long mPSet2 = SetCursorPos(h, i) Call mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0) Call mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0) Workbooks(freesoft).SaveAs FileFormat:=xlNormal, Filename:=k Workbooks(k).Close End sub
- ベストアンサー
- Visual Basic
- i20160309smihid
- 回答数2
- エクセルマクロ 特定の文字入力の際の処理
お世話になります。 エクセルマクロで、sheet1のE列の6~30行に指定する文字が入力された際、 B列のその同じ行にある文字を取得し、その取得した文字をsheet3のC6から K6まで書き出していきたいのですが、どのようにしたらよいでしょうか? if関数も考えましたが、条件の設定に困ってしまいます。 マクロで良い方法があれば教えていただけると助かります。
- ベストアンサー
- Excel(エクセル)
- na714
- 回答数3
- 実行時エラー3021「BOFとEOFのいずれかTR
Sub test() Set cn = CurrentProject.Connection rs.Open "T分類", cn, adOpenStatic, adLockPessimistic rs.Filter = "中分類 = '不明' And (大分類 <> '不明')" For i = 1 To rs.RecordCount str大分類 = rs("大分類") rs("中分類") = str大分類 & "(不明)" rs.Update rs.MoveNext Next rs.Close: Set rs = Nothing cn.Close: Set cn = Nothing End Sub アクセスADOで上記のようなコードなのですが よく意味の分からないエラーが発生します。 コードの内容は 大分類が不明ではなく中分類が不明なら 中分類のレコードに大分類の値+不明にする です。 例えば該当のレコードが8レコードあれば i=5の時に、 実行時エラー3021「BOFとEOFのいずれかTRUE になっているか、 または現在のレコードが削除されています。 要求された操作には、 現在のレコードが必要です。」 が発生します。 規則としては rs.RecordCountの半分の値までは大丈夫ですが rs.RecordCountの半分+1の時に 上記のエラーが発生します。 ADOでデータの追加をする時にAddNewメソッドを入れ忘れた場合も 上記と同じエラーが発生しますが 今回のコードはフィルターをかけ 更新したいレコードを掴んでいるので AddNewメソッドは不要だと思っています。
- ベストアンサー
- Visual Basic
- VJZDIRCT
- 回答数3
- ファイル入力画面からファイル名を入れて継続して動作
excel vbaで、他のEXCELファイルのマクロの処理を中断して、自己ファイルのマクロを処理後、再度他のEXCELファイルのマクロを継続して再度処理を行わせるにはどうすれば良いですか。教えて下さい 他のEXCELファイルとして、フリーソフトを利用しています。 そのソフトは、モジュールにロックが掛ってるので、その中のマクロなどを編集することはできません。(ロック解除などは考えていません。) そのソフトを起動して、データファイル入力画面で、データファイルを入力して、処理をして、処理結果を保存することを、入力データファイルを変えながら、繰り返し行いたいです。 そこで、処理マクロを作成しています。その手順とVBAを説明します。 1)フリーソフトを開き、 2)そのフリーソフトのシート内のボタンを、VBAで、マウスカーソルを移動させて、マウスのキー操作で、「押す」「離す」を行い、 3)ファイルの初期化の問合せの警告が出るので、キー操作で、「Y」を押し、 4)データファイルの名称をクリップボードにコピーし 5)EXCELのカレントフォルダを、データファイルのあるフォルダに変えて 6)DoEventsとして、フリーソフトのデータファイル入力画面を開いています。 この時、画面のポインタは、データ入力画面のファイル名入力欄にあり、 この後、データファイル名をクリップボードから入力したいので、 キー操作で、「crtl+v」としたいのですが フリーソフトのマクロが起動中で、作成している処理マクロに制御が移らないためと思いますが 入力できません。(人手での入力は可能ですが)、自動化したいので、どの様にすれば良いか教えて下さい。 マクロは長いので、抜粋して記載します。 sub a() (宣言文省略します。) Workbooks.Open freesoft Dim mPSet As Long mPSet = SetCursorPos(b,c) Call mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0) Call mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0) keybd_event VK_Y, 0, fKEYDOWN, 0 keybd_event VK_Y, 0, fKEYUP, 0 Application.CutCopyMode = False Dim d As New DataObject With d .SetText e .PutInClipboard End With ChDrive f ChDir g DoEvents (ここで、止まります。) With d .GetFromClipboard .GetText End With keybd_event VK_RETURN, 0, fKEYDOWN, 0 keybd_event VK_RETURN, 0, fKEYUP, 0 DoEvents Dim mPSet2 As Long mPSet2 = SetCursorPos(h, i) Call mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0) Call mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0) Workbooks(freesoft).SaveAs FileFormat:=xlNormal, Filename:=k Workbooks(k).Close End sub
- ベストアンサー
- Visual Basic
- i20160309smihid
- 回答数2
- エクセルVBA ブック間の操作・保存について
エクセルVBAで次の内容でプログラムしたいと思っていますが、どうもうまくいきません。 1.BOOK1のsheet1のセルC10・セルE10に文字入力 2.1のセルE10に文字入力し確定後、BOOK2が自動的に開く 3.BOOK2・sheet1・セルC4にBOOK1・セルC10の文字を取得 4.BOOK2・sheet1・セルH4にBOOK1・セルE10の文字を取得 5.BOOK2に「(秘)セルC10の文字+(セルE10の文字)・xlsx」で名前を付けて保存 6.BOOK1のsheet1のセルC11・セルE11に文字入力 7.6のセルE11に文字入力し確定後、BOOK2が自動的に開く 8.BOOK2・sheet1・セルC4にBOOK1・セルC11の文字を取得 9.BOOK2・sheet1・セルH4にBOOK1・セルE11の文字を取得 10.BOOK2に「(秘)セルC11の文字+(セルE11の文字).xlsx」で名前を付けて保存 以降BOOK1 セルC12~C29、セルE12~E29まで上記を繰り返す ※セルC、Eの文字入力は29行まで入力されないこともある という感じでBOOK1の決められたセルに入力された文字を BOOK2へ独立した形で振り分け、それぞれ名前をつけて保存していきたいです。 1~4までは何とかできたのですが、ファイル名をつけて保存と、以降の繰り返しが いろいろ参考にしたのですが、うまくいきません。 初歩的な内容で申し訳ありませんが、ご教授お願い致します。
- ベストアンサー
- Excel(エクセル)
- na714
- 回答数2
- エクセルVBA ブック間の操作・保存について
エクセルVBAで次の内容でプログラムしたいと思っていますが、どうもうまくいきません。 1.BOOK1のsheet1のセルC10・セルE10に文字入力 2.1のセルE10に文字入力し確定後、BOOK2が自動的に開く 3.BOOK2・sheet1・セルC4にBOOK1・セルC10の文字を取得 4.BOOK2・sheet1・セルH4にBOOK1・セルE10の文字を取得 5.BOOK2に「(秘)セルC10の文字+(セルE10の文字)・xlsx」で名前を付けて保存 6.BOOK1のsheet1のセルC11・セルE11に文字入力 7.6のセルE11に文字入力し確定後、BOOK2が自動的に開く 8.BOOK2・sheet1・セルC4にBOOK1・セルC11の文字を取得 9.BOOK2・sheet1・セルH4にBOOK1・セルE11の文字を取得 10.BOOK2に「(秘)セルC11の文字+(セルE11の文字).xlsx」で名前を付けて保存 以降BOOK1 セルC12~C29、セルE12~E29まで上記を繰り返す ※セルC、Eの文字入力は29行まで入力されないこともある という感じでBOOK1の決められたセルに入力された文字を BOOK2へ独立した形で振り分け、それぞれ名前をつけて保存していきたいです。 1~4までは何とかできたのですが、ファイル名をつけて保存と、以降の繰り返しが いろいろ参考にしたのですが、うまくいきません。 初歩的な内容で申し訳ありませんが、ご教授お願い致します。
- ベストアンサー
- Excel(エクセル)
- na714
- 回答数2
- エクセル表のパスからのコピー処理について
お世話になります。 エクセルVBAで質問です。 下記のような表をエクセルで作り、A列の名称が元フォルダのパス、 そのフォルダの中にエクセルとパワポやワードのファイル名が入っているとします。 その中の全てのファイルをコピーで同じ行のB列のフルパスのフォルダ内にコピーしたいのですが、マクロなどでの作成方法を教えてくだい。 A列 B列 C:\a1 Z:\test1 C:\a2 Z:\test2 C:\a3 Z:\test3 ・ ・ ・ バッチファイルであれば簡単なことですが、エクセルの表で管理したい次第です。 コピー先フォルダ内に同じファイルがあれば上書きしても構いません。(何回実行して同じファイルが上書きされてもOK) 出来ればxcopyで実行したいのですが、VBやVBAで使えるコマンドなのか、また繰り返し処理や応用に慣れてないため、詳しい方ご教授いただけると幸いです。 例えばC列以降に元のコピー対象ファイルを全て書き出してから、それらの一つ一つのファイルを読み込んでB列のフォルダ内にコピーするような動きでも問題ありません。 リスト作成する行の数は毎回決まっていなく、最大で50くらいあります。 ぜひ、ご教授お願いします。
- ベストアンサー
- Excel(エクセル)
- cz9d39
- 回答数2
- フロントブレーキ 握りしろ
2001年式 xjr1300に乗ってるのですが、最近 フロントブレーキが乗り始めは普通の握り深さでにぎれるのですが、運転してるとフロントブレーキの握りしろが少なくなってきて、握りしろが無くなってくるのですが、原因は何が考えられるでしょうか よろしくお願いします
- アクセスのユニオンクエリについて
アクセス初心者です。 見よう見まねでユニオンクエリを変更しているのですが、結果に日付設定以外のデータも含まれてしまいます。 【<データ>に含まれる次の条件結果を一括で抽出したい】 (1) 商品が 'バニラ'か、 'チョコ'か、'イチゴ'か、'バナナ'で、かつ、お届け日が180日前~30日後(今日から)までのもの。 (2) 商品が 'ヨーグルト'で、かつ産地に ‘北海道’を含む言葉が含まれている、かつ、お届け日が180日前~90日後(今日から)までのもの。 SELECT * FROMデータ WHERE [商品] = 'バニラ' OR [商品] = 'チョコ' OR [商品] = 'イチゴ' OR [商品] = 'バナナ' AND [お届け日] between Date()-180 and Date()+30 UNION SELECT * FROM データ WHERE [商品] = 'ヨーグルト' AND [産地] LIKE '*北海道*' AND [お届け日] between Date()-180 and Date()+90; どこを修正したら日付範囲が正しく抽出されるのか、教えていただけませんか??
- VBAを使用しての重複チェック→住所録作成
VBAを始めたばかりの初心者です。 VBAにて受注データの重複チェックを行い、別シートへ住所録を作りたく奮闘しております。 他のシステムへインポートするため関数を使用するとなぜかエラーが出てしまうのでVBAのみで対応したいです。 Excelはバージョン2016です。 ▼受注データはおおむね下記の状態です。 シート1 A B C D E F G H I 受注日 電話1 電話2 電話3 名前 住所 商品 数量 受注ID 2016/2/5 11 111 1111 山田 東京 りんご 5 123-11111 2016/2/5 11 111 1111 山田 東京 いちご 2 123-11111 2016/2/5 11 111 1111 山田 東京 バナナ 6 123-11111 2016/2/5 80 8888 8888 鈴木 福岡 メロン 1 123-22222 2016/2/8 44 444 4444 加藤 奈良 りんご 3 123-33333 2016/2/8 44 444 4444 加藤 奈良 すいか 1 123-33333 2016/2/8 44 444 4444 加藤 奈良 ぶどう 5 123-33333 2016/2/8 44 444 4444 加藤 奈良 レモン 6 123-33333 2016/2/8 44 444 4444 加藤 奈良 いちご 2 123-33333 ▼やりたいこと シート2に受注IDを基に重複しないよう抽出して住所録を作りたいです。 (1) I列で重複をチェック (2) B列の電話1ですが先頭にOが削除されて表示されるのでシート2では0を付与してリスト化 (3) B列~D列の電話番号をシート2のリスト化の際には1つのセルに(ハイフンなしで)まとめる (4) (3)とは別のセルにB列~D列の電話番号をハイフンを付与してまとめる ※電話番号は固定電話と携帯電話の番号が混ざっています。 (5) 住所録はシート2に作成 補足 (3)の情報は別システムのID(コード)として使用します。 (4)はそのまま電話番号として使用します。 ▼理想的な状態 A B C D ID 名前 住所 電話 0111111111 山田 東京 011-111-1111 08088888888 鈴木 福岡 080-8888-8888 0444444444 加藤 奈良 044-444-4444 ▼難しそうなら最悪 A B C D E F G H I 受注日 電話1 電話2 電話3 名前 住所 商品 数量 受注ID 2016/2/5 11 111 1111 山田 東京 りんご 5 123-11111 2016/2/5 80 8888 8888 鈴木 福岡 メロン 1 123-22222 2016/2/8 44 444 4444 加藤 奈良 りんご 3 123-33333 までの状態にはもっていきたいです。 Webにて有志のかたの参考情報を基に 受注IDから重複チェックを行い特定のセルのみを抽出することは出来たのですが 行全体を抽出する方法がわかりませんでした…。 よろしくお願いいたします。
- ベストアンサー
- Excel(エクセル)
- torento19
- 回答数3
- エクセルVBAへのwindowsAPIの組み込み
Excel2010を使用しています。 以下のページの最初に紹介されているマクロを実装・使用したいのですが、やり方がわかりません。 『excel_vbaでスクリーン上のpixelの色を拾いたい』 http://www.excel.studio-kazu.jp/kw/20060624174313.html APIを使ったマクロを書いたことがないので、Declare Function~Sub辺りの運用がわかりません。 詳しい方のご助力を願います。
- ベストアンサー
- Visual Basic
- chiku_sho
- 回答数2
- accessのユニオンクエリについて教えてください
accessのユニオンクエリで以下の(1)選択クエリを表(2)のように並び替えを行いたいのですが、 記述がわかりません。内容的にはコントロール名に表示されるデータを項目として使用し、また項目に対応する、文字データをひもづけて表(2)のように並び替えをしたいのです。 また、文字データはたくさん入力され1500文字程度になる場合があります。 どなたか、お分かりになる方がいらっしゃいましたら教えていただけませんか? 宜しくお願い申し上げます。 (1)選択クエリ ID 氏名 年齢 性別 コントロール名 文字データ 1 Aさん 10歳 男 項目1 文字dataA1 2 Bさん 20歳 女 項目1 文字dataB1 3 Cさん 30歳 男 項目1 文字dataC1 1 Aさん 10歳 男 項目2 文字dataA2 1 Aさん 10歳 男 項目3 文字dataA3 2 Bさん 20歳 女 項目2 文字dataB2 3 Cさん 30歳 男 項目2 文字dataC2 1 Aさん 10歳 男 項目4 文字dataA4 1 Aさん 10歳 男 項目5 文字dataA5 2 Bさん 20歳 女 項目3 文字dataB3 3 Cさん 30歳 男 項目3 文字dataC3 3 Cさん 30歳 男 項目4 文字dataC4 2 Bさん 20歳 女 項目4 文字dataB4 2 Bさん 20歳 女 項目5 文字dataB5 表(2) ID 氏名 年齢 性別 項目1 項目2 項目3 項目4 項目5 1 Aさん 10歳 男 文字dataA1 文字dataA2 文字dataA3 文字dataA4 文字dataA5 2 Bさん 20歳 女 文字dataB1 文字dataB2 文字dataB3 文字dataB4 文字dataB5 3 Cさん 30歳 男 文字dataC1 文字dataC2 文字dataC3 文字dataC4
- 実行時エラー -2147217887
一つのアクセスファイルに エクセルからADOでデータを追加しているのですが その外套のアクセスファイルも捜査をしているタイミングで 実行時エラー -2147217887 他のユーザー が同じデータに対して同時に更新を試みているので、 プロセスが停止しました。 と表示されますが このエラーを表示せず、エクセルADOを優先されるには どういうコードにすればいいですか? ちなみに一度中断モードにして 同じコードを再度実行しようとすると 実行時エラー -2147217887 Update または CancelUpdateメソッドには、対応するAddNewまたはEditメソッドが必要です とエラー内容が変わります。 コードは rs.Open "SELECT * FROM テーブル", cn, adOpenStatic, adLockPessimistic rs.Filter = "番号 = " & 番号 rs("フィールド") = str文字 ’ココでエラー の時です。
- ベストアンサー
- オフィス系ソフト
- ypixajovksa
- 回答数1
- 使用中 「応答しない」が時々起こる
ネット使用中やoffice使用中などに「応答しない」が発生。暫くすると復帰する。 Windows 8.1、 IE11 です。 ネットで調べたり、システムの復元やトラブルシューティングなどをしてみましたが、効果はありませんでした。 Windows8.1のシステム修復やIE11の再インストールなどがありますが、良くわからないので まだ実行していません。 素人ですので、出来るだけ優しく教えてください。
- 締切済み
- オフィス系ソフト
- seinakamoto
- 回答数4