Visual Basic

全22567件中41~60件表示
  • テキストデータを複数の変換条件に従って高速処理

    CSVファイルがあり、そこにはクレジットカード利用データが記録されています。 日付、店名、金額、処理番号とでもさせてください。 店名に従って、カテゴリを書き込んでいきます。マクドナルドなら食事とかヒルトンなら宿泊費などです。マクドナルドだけでも店場所がちがうとそれらもまとめなければなりません。このあたりは正規表現で置換させます。 どこから店名のリストと対応するカテゴリのリストを用意して条件を作成するのか、という問題がありますが(最初は手打ち)とりあえずどうやってスクリプトを書いていけばよいのか指針を教えてください。何百という対応リストに何十というデータ行があります。一行づつ読んでいき、店名リストに一つずつ照らし合わせていくのではかなり遅くなるのではないでしょうか。 こういったときにはどういうロジックを使用するのでしょう?2次元配列とか聞いたことがあります。カード利用回数だけループさせて何百という条件処理を一度にくぐらせる、もしくは履歴データを丸ごと条件処理数だけくぐらせれば時間短縮になりますよね。うまく伝わってくれればよいのですが。 エクセルマクロにするのかパイソンで書くのかも考えなければなりません。(他は経験まったく無し) どうぞよろしくお願いいたします。

  • このブックでマクロが使用できないか、またはすべての

    このマクロをsubプロシージャから実行しました。問題なく実行デッキました。しかしマクロを登録したボタンからは実行できず、なぜかこのエラー文が出てしまいました。 Sub 日付の非表示、表示() Set f1 = Sheets(1) Set h1 = Sheets(2) Set f2 = Sheets(3) Dim d1 As Date, dday As Date d1 = f1.[AG3].Value d2 = Day(d1) f1.[A:AG].EntireColumn.Hidden = False f2.[A:AG].EntireColumn.Hidden = False h1.[A:AG].EntireColumn.Hidden = False Select Case d2 Case Is = 15 MsgBox "非表示にする行はありませんでした。" Case Is = 16 f1.[AG:AG].EntireColumn.Hidden = True f2.[AG:AG].EntireColumn.Hidden = True h1.[AG:AG].EntireColumn.Hidden = True Case Is = 17 f1.[AF:AG].EntireColumn.Hidden = True f2.[AF:AG].EntireColumn.Hidden = True h1.[AF:AG].EntireColumn.Hidden = True Case Is = 18 f1.[AE:AG].EntireColumn.Hidden = True f2.[AE:AG].EntireColumn.Hidden = True h1.[AE:AG].EntireColumn.Hidden = True End Select End Sub 他の場所にこんなマクロを作りボタンから実行したのですが問題なく実行出来ました。 Sub デバッグ() [AK7].Value = 11 End Sub 原因は何でしょうか?

  • VBAでIFの複数条件がうまく動きません。

    エラー表示がなくローカルでも見れませんでした。 修正箇所が分からずにいます。 詳しい方教えてください。 何卒よろしくお願いいたします。 ※S、T列に★は入るのですがA列の条件(10000以下)やS列の条件(空白以外)を無視して★が入っています。 作業内容 '(1)A列<従業員ID>のフィルターを数字フィルターで10000以上に設定 '(2)I列<所属>のフィルターを「秋田・長野・栃木・本社」以外に設定 '(3)L列<就労状況>のフィルターを「退職」以外に設定 '(4)M列<勤務形態>のフィルターを「常勤」以外に設定 '(5)S列<資格者>のフィルターを「(空白)」に設定 '(6)J列<エントリー時の保有資格>のフィルターを「aaa・bbb・ccc・ddd」に設定 For r = Cells(Rows.Count, 1).End(xlUp).Row To 4 Step -1 If Cells(r, "A") >= 10000 And _ Not Cells(r, "I") Like "*秋田*" Or Not Cells(r, "I") Like "*長野*" Or _ Not Cells(r, "I") Like "*栃木*" Or Not Cells(r, "I") Like "*本社*" And _ Not Cells(r, "L") Like "退職" And _ Not Cells(r, "M") Like "常勤" And _ Cells(r, "S") Like "" And _ Cells(r, "J") Like "*aaa*" Or Cells(r, "J") Like "*bbb*" Or Cells(r, "J") Like "*ccc*" Or Cells(r, "J") Like "*ddd*" Then Cells(r, "S") = "★" Cells(r, "T") = "★" End If Next r End Sub

  • VBEを開く時のコマンド名

    VBEについての質問です。 ExcelでVBAを記述する時に,VBEを開くと思いますが,Excelの開発タブから 「Visual Basic」というコマンドをクリックすると思いますが VBEを開くのに,なぜコマンドの名称は「Visual Basic」なのでしょうか?

  • 列の表示非表示をするマクロ

    C列とE列が非表示ならば再表示 表示されていれば非表示になるマクロを設定したいです。 このマクロを正しくするにはどうすればいいですか? Sub 再表示また非表示() If Columns("C:C,E:E").Hidden = True Then Columns("C:C,E:E").Hidden = False Else: Columns("C:C,E:E").Hidden = False Columns("C:C,E:E").Hidden = True End If End Sub

  • ExcelのVBAで複数行を転記する方法について

    いつもお世話になります。YouTubeで変数を使わない複数行を纏めて転記する内容を見ました。”C10~H12セルの値をL10~Q12セルへ出力する" <Range("L10:Q12"):Value=Range("C10:H12"):Value> で一行で纏められる例題が出ていました。そこで私が作っている変数入りの複数行を一行で書く方法を教えてください。 ””””私の作ったプログラムです””””” Sub 領収証班別() '出力行を設定する変数の定義 Dim CtrRow '繰返し処理用の変数定義 Dim i '------------------------------------------------------------------------------ '出力行の開始位置を設定 CtrRow = 2 '2行目から62行目まで繰り返す For i = 2 To 62 'B(領収証の班別)に指定班名が合致しているか判定する If Worksheets("領収証").Range("B" & i).Value = "南1班" Then 'Worksheets("領収証班別").Range("A" & CtrRow).Value = Worksheets("領収証").Range("A" & i).Value 'Worksheets("領収証班別").Range("B" & CtrRow).Value = Worksheets("領収証").Range("B" & i).Value 'Worksheets("領収証班別").Range("C" & CtrRow).Value = Worksheets("領収証").Range("C" & i).Value 'Worksheets("領収証班別").Range("D" & CtrRow).Value = Worksheets("領収証").Range("D" & i).Value 'Worksheets("領収証班別").Range("E" & CtrRow).Value = Worksheets("領収証").Range("E" & i).Value '1行出力したため、出力行の位置を+1にする CtrRow = CtrRow + 1 '判定処理の終了 End If '繰り返し処理の終了 Next i '------------------------------------------------------------------------------ '出力行の開始位置を設定 CtrRow = 24 '2行目から62行目まで繰り返す For i = 2 To 62     :     : 次から次へと続きます。 と云うようなプログラムの中で 'Worksheets("領収証班別").Range("A" & CtrRow).Value = Worksheets("領収証").Range("A" & i).Value 'Worksheets("領収証班別").Range("B" & CtrRow).Value = Worksheets("領収証").Range("B" & i).Value 'Worksheets("領収証班別").Range("C" & CtrRow).Value = Worksheets("領収証").Range("C" & i).Value 'Worksheets("領収証班別").Range("D" & CtrRow).Value = Worksheets("領収証").Range("D" & i).Value 'Worksheets("領収証班別").Range("E" & CtrRow).Value = Worksheets("領収証").Range("E" & i).Value この複数行をYouTubeの例題の様に一行に纏めて書く方法はありませんか?このプログラムも、よちよち歩きで作ったものです(初心者です)よろしくお願いいたします。

  • 同じコードを毎月使いたい

    ブック9月に次のコードを入れ計算しました。正常に使用できました。同じブック内での計算は、1回だけの設定です。                             Private Sub 有給計算ボタン_Click() Application.ScreenUpdating = False Unload Me If Sheets("支給実績").Range("G1").Value = "" Then 個人別の作成 MsgBox "有給計算処理を終了しました." D符号部.Show Else ' セルG1に1が入っている場合 MsgBox "既に有給計算処理は終了しています。" D符号部.Show End If Sheets("支給実績").Range("G1").Value = "1" Application.ScreenUpdating = True End Sub このコードを複写して10月分を計算しようとすると"G1には、 "1" が入って入るので計算しません。これをどんな月でも計算できるようにしたいです。どうしてでしょうか、ご教示お願いします。                                 

  • VBAが動きません。

    VBAのコードが動きません。 エラーも出ないので、どこで動かないかわからずにいます。 どこに原因があるか教えていただけないでしょうか? お手数ですが何卒よろしくお願いいたします。 ※画像参照 '①B列<社員番号>のフィルターを「(空白)」を外す '(1)F列<住所都道府県>のフィルターを「茨城・栃木・群馬・埼玉・千葉・東京・神奈川・新潟・山梨・長野・福島・大阪・兵庫」以外で設定 '(2)H列<エリア>のフィルターを「茨城・栃木・群馬・埼玉・千葉・東京・神奈川・新潟・山梨・長野・福島・大阪・兵庫」以外で設定 Sub フィルタ削除1_1() Dim pref As Variant pref = Array("茨城県", "栃木県", "群馬県", "埼玉県", "千葉県", "東京都", "神奈川県", "新潟県", "山梨県", "長野県", "福島県", "大阪府", "兵庫県", "静岡県") Dim r As Long, i As Integer, j As Integer For r = Cells(Rows.Count, 3).End(xlUp).Row To 4 Step -1 If Cells(r, "B") <> "" Then For i = 0 To UBound(pref) If InStr(Cells(r, "F"), pref(i)) > 0 Then Exit For End If Next i For j = 0 To UBound(pref) If InStr(Cells(r, "H"), pref(j)) > 0 Then Exit For End If Next j If (i > UBound(pref)) And (j > UBound(pref)) Then Rows(r).Delete End If End If Next r End Sub

  • 繰り返し処理のマクロ

    下記のマクロをご教示いただけるでしょうか。 ①シートAのアクティブセルをコピーし、シートBのE1セルにペースト ②マクロ「結果反映」を実行 ➂シートAのアクティブセルを1行下に移動 ①から➂をアクティブセル=空白セルになるまで繰り返し

  • 特定の文字に対してポップアップ表示

    エクセルvbaでセルに特定の文字を含む文字が入力された時に、ポップアップを表示するようにしたいのですが、特定の文字とメッセージ内容は"設定用シート"内のA列に特定の文字、B列にメッセージ内容をセット。 下記のコードでは動作致しません。 どのように修正すれば宜しいでしょうか? Worksheet_Change(ByVal Target As Range) Dim searchRange As Range Dim cell As Range Dim searchText As String Dim message As String ' 設定用シートを参照 Set searchRange = Sheets("設定用シート").Range("A:B") ' 変更されたセルの中で特定の文字を検索 For Each cell In Intersect(Target, Me.UsedRange) searchText = cell.Value If Not IsEmpty(searchText) Then ' 設定用シートで特定の文字を検索 On Error Resume Next ' セルが見つからなかった場合のエラーハンドリング message = searchRange.Columns(2).Find(searchText).Offset(0, 1).Value On Error GoTo 0 ' エラーハンドリングを元に戻す If Len(message) > 0 Then ' ポップアップ表示 MsgBox message, vbInformation, "メッセージ" End If End If Next cell End Sub

  • VBA コンボボックス

    VBAコンボボックスで AAAを選択→処理A BBBを選択→処理B CCCを選択→処理C としている場合、 AAAを選択→処理Aの後、コンボボックスで再度AAAをクリックしても次の処理Aにいきません。いったんBBBをクリックしてしてAAAをクリックすると処理Aに行きますが、連続AAAをクリックして処理Aはできないでしょうか。 何か方法はありませんか? Private Sub ComboBox1_Change() If ComboBox1.Value = "AAA" Then   ’処理Aへ ElseIf ComboBox1.Value = "BBB" Then   ’処理Bへ Else   ’処理Cへ End If End Sub

  • Excel VBA

    外部からモジュールを読み込めるようにしました。 ーーーーーーーーーーーーーーーーーーーーー Sub moduleImport_All() 'インポートしたいファイルのあるフォルダを指定 Dim sImportPath As String sImportPath = "C:\VBA\module\" 'FileSystemObjectの作成 Dim oFso As Object Set oFso = CreateObject("Scripting.FileSystemObject") 'フォルダオブジェクトを取得 Dim oDir As Object Set oDir = oFso.GetFolder(sImportPath) 'ファイル名を順次取得 Dim fFile As Object For Each fFile In oDir.Files 'ファイルの拡張子を取得 Dim sExt As String sExt = oFso.GetExtensionName(fFile.Name) '拡張子からモジュールだけを取得、インポート Select Case LCase(sExt) Case "bas", "cls", "frm" '指定のモジュールをインポート ThisWorkbook.VBProject.VBComponents.Import sImportPath & fFile.Name End Select Next MsgBox "完了" End Sub ーーーーーーーーーーーーーーーーーーーーー しかし、上書きがなされない為、1,2,3とモジュールが増えてしまいます。 読込みたいフォルダ内のファイルと同じ名前であれば全て上書きするにはどのように修正したらよいでしょうか?

  • VB6からExcelを最前面に起動する方法

    Windows 11 Proの環境でVisual Basic 6のプログラムからExcelを最前面に起動する方法を教えていただけないでしょうか? 現在, ExcelApplicaiton = CreateObject(”Excel.Application") ExcelApplication.Visible = True ExcelApplication.WindowState = xlNormal となっています.

  • クリスタルレポートのグループヘッダ

    Visualbasic 2013とクリスタルレポートを利用してアプリケーション開発を行っております。 クリスタルレポートはサブレポートを準備しており、 メインとなるレポートの詳細部にサブレポートを配置しております。 このような構成でレポートを出力した場合、 必ず1ページ目にグループヘッダのみ出力され、それ以降は正常に出力される事象が発生しております。 1ページ目にグループヘッダのみ出力される理由が分からない状況です。 大変お手数お掛けいたしますが分かる方がいらっしゃいましたら ご教授頂けますと幸いです。

  • Excel VBA

    Excel VBAについて シート1にはデータが入ってます。 G列に日付、L列に商品名、N列に件数。 シート2には集計結果を入力したいです。 セルB2に、日付が10月1日から15日までで、商品名がAの件数の合計。 セルB3は、日付が10月16日から末日まで、セルB4は、日付が11月1日から15日までと半月毎に集計を半年後の末日まで繰返し、B2の数行下には、商品名Bの集計行を作り、その数行下には商品名Cの集計行を作りたいです。 これまでは関数SUMIFSで集計していましたが、複数店舗分のシートの更新・メンテナンスが大変なので、VBAでの集計を考えいろいろ調べてるのですが、方法が思い付かないので、ご教授ください。

  • VBAでの文字列のダブルクォーテーション

    Print #1, "<td class="""" first"""">1ヒート</td>" 結果 <td class="" first"">1ヒート</td> となってしまいます。 <td class=" first">1ヒート</td>にするにはどうしたら良いでしょうか?

  • exeファイルをプログラムから操作する。

    お世話になります。 VisualStudio2019(C#またはVB)で下記を実装したいと思っています。 ①あるプログラム(1.exe)のフォーム内にいくつかある指定のボタンを押す。  ⇒ウィンドウを取得、ウィンドウハンドルを取得してボタン押下 ②①の操作でプログラム(2.exe)が起動する。 ③2.exeプログラムの複数あるテキストボックスの中から指定のテキストボックスに文字を入力  ⇒ウィンドウを取得、テキストボックスのウィンドウハンドルを取得してテキストに値をセット いろいろサイトを探したのですが、「まさにコレ」といったものがなく困っています。 もしご教授いただければ幸いです。 よろしくお願いいたします。

  • visualbasic datagridview

    VisualBasic 2013 を利用してWindows Formアプリケーションを構築しております。 DataGridViewを配置してデータベースよりデータ抽出した結果を表示しております。 表示レコードが複数行存在する場合にはスクロールバーが表示されているのですが、スクロールバーの表示が小さいため以下のような方式で制御できないかと考えております。 ★実現したいこと  ボタン「↑」を配置しボタンクリックで上側へのスクロール制御  ボタン「↓」を配置しボタンクリックで下側へのスクロール制御 大変お手数お掛けいたしますがご存じの方がいらっしゃいましたらご教授のほどよろしくお願いいたします。 以上です。

  • Excel VBAの動作異常

    Win11 Office365family Excel (A)のSheet配置でVBAを作成していました。 プロジェクトエクスプローラ(PE)は、当然(B)の通りシート名が(A)と同じです。 ところが、VBAを作っていく段階でいつの間にか(C)のようにSheet1,11,111と増えておりこの時点でコマンドボタンが機能しなくなっていました。Sheet1,11は、Sheetの画面に存在しない。 1) プログラムはSheet1に記録されている。 2) 画面の「クイズ」はPEのSheet111(クイズ)に対応しているが、プログラムが記述されていない。 3) Sheet1に記載のプログラムを全コピーしSheet111(クイズ)に張り付けると正常に動くようになった。 そこで下記についてご教示いただきたくよろしくお願いします。 A) Sheet増える理由:どのような操作をしたから発生したのか? B) Sheet1,11はシートが存在しないので、PEから削除したいがその方法は? C) Sheet111(クイズ)をSheet1(クイズ)に戻す方法は?  

  • VB フォームのAutoScroll=trueにて

    VB.NETで画面を作成しています。 利用者に寄って解像度が異なるため、フォームのプロパティにあるAutoScrollをTrueで設定しています。 その際に、以下の動作となってしまい、ボタンの処理が実行されずに困っています。 解決策ご存じの方いましたら、ご教授をお願いいたします  ①初期表示時に見えているテキストにフォーカスが当たっている  ②初期表示時には見えなかったボタンをスクロール  ③マウスでボタンクリック  ④左上にフォーカスの当たっているテキストがギリギリ見える   ところまで勝手に移動  ⑤クリックしたはずのボタンの処理が実行されない