『Visual Basic』に関する質問・疑問一覧

関連カテゴリ

次へ  ]
22177件中 1~20件目
  • VBA のオートフィルタについて

    ExcelVBA初心者でございます。 2点質問がございます。 (1)エクセルVBAのオートフィルタの機能を使い、"マスタ0701"シートの13行目が”ABC”の行を、"検索結果"というシートにコピーしたいです。 以下のマクロを実行しますと、まず"マスタ0701"のB1のセル(13行目はブランク)がコピーされ、その下に13行目が”ABC”に該当する行がコピーされます。 なぜ、B1セルまでコピーされるのかご教示頂けますと幸いです。 (2)また検索結果だけでなく、オートフィルタのタイトル行もコピーするようにするにはどうしたら良いでしょうか? よろしくお願いいたします。 Sub 絞り込み() With Worksheets("マスタ0701").Range("A1") .AutoFilter Field:=13, Criteria1:="ABC" .CurrentRegion.SpecialCells(xlVisible).Copy Worksheets("検索結果").Range("A1") .AutoFilter End With End Sub

    2020/08/09 15:29
  • ディレクトリの変更がしたいです

    windows10,Microsoft365使用の超初心者です。 1時間かかってもディレクトリの変更ができませんでした。( ノД`)シクシク… デスクトップにフォルダAAがあります。その中にBB.xlsmとフォルダCCがあります。 そして、BB.xlsmをクリックすると、ユーザーフォームDDが表示されます。 その中のコマンドボタンEEをクリックするとダイアログボックスが現れます。 ボックスの中には、フォルダCCの中のファイルから1個を開きたいです。 Sub ファイルを開くダイアログボックスを用いてファイルを開く() Dim OpenFileName As String ChDrive "C" ChDir "C:\user\nanigasi\Desktop\フォルダAA\フォルダCC" OpenFileName = Application.GetOpenFilename(FileFilter:="Excelファイル,*.xlsx") If OpenFileName <> "False" Then Workbooks.Open OpenFileName Else MsgBox "キャンセルされました" End If End Sub

    2020/08/05 20:38
  • VBA Do~Loopについて

    VBA勉強中です。 マクロの作成は完了しているのですが、処理効率について指摘を受け、 その際に助言もいただいたのですが、自身の勉強不足、理解不足で どのように変更すれば良いのか分からず、教えていただきたいです。 Do While Ax2 <= 30 で30回繰り返すのではなく (Cells(Ax2,"B").Value <> "" ) の間繰り返すように変更したいです。 ---------------- Sub test()  Dim File1(30) As string  Dim Sheet1(30) As string  Dim Sheet2(30) As string  Dim Cnt As Integer  Ax1=1  Ax2=7  Do While Ax2 <= 30    If Cells(Ax2, "B").Value <> "" Then     File1(Ax1) = Cells(Ax2, "B").Value     Sheet1(Ax1) = Cells(Ax2, "C").Value     Sheet2(Ax1) = Cells(Ax2, "D").Value     Cnt =Ax1    End If    Ax1 = Ax1 + 1    Ax2 = Ax2 + 1  Loop End Sub ---------------- お手数ですが、よろしくお願いいたします。

    2020/08/05 16:41
  • フレームを追加コピーする方法を教えてください

    VBAの質問になります。 Userform1にて、フレームを作り、その中にテキストボックスや、ラベル、別のフレーム等を配置したフレームFrame1を作りました。 そのFrame1を1つのレコードとして、複数個をUserform1に配置し、各フレームの中に見やすくデータを出力したいと思っています。 レコード数は可変のため、VBEに当初からフレームを個数分配置しておくことはできません。(VBEに配置するとしても画面の大きさ上、3つが限度です) そのため、 Set addrec1 = Userform1.Controls.Add("Forms.Frame.1", "Frame" & i + 1, True) でUserform1にフレームを追加しましたが、新規のフレームとなるため、当然frame1は出てきてくれませんでした。そのため、 set addrec1 = frame1 を複数記載したところ、Frame1はそれぞれの位置に移動するもののコピーはされません。 (最後の位置に移動するだけ) Set addrec1 = .Controls.Add("Forms.Frame.1", "Frame" & i + 1, True)で新規にフレームを追加し、その中にテキストボックスやラベル、フレーム等を位置を考慮し、自分でロジックで作ってやればできると思いますが、余りにも配置等を含め手間暇がかかりすぎます。 折角作った、VBEのFrame1を使って、それをコピーし複数個を配置(Frame2,Frame3・・・)したUserform1を作りたいと思っています。 ユーザーフォームに、既存のフレームを追加コピーし、配置/アクセスする方法を教えてください。 何卒、ご教授のほどよろしくお願いいたします。

    2020/08/05 11:52
  • Access 検索した値を別フォームに

    Accessのシステムを会社で作ってます。 検索したIDをサブフォーム(データシート型) で表示したレコードを編集フォーム(別フォーム)に呼び出したいのですが上手く出来ません。 ネットでも検索しましたが良いのがありませんでした。 どなたか、お手数ですがコードを教えていただけないでしょうか? 何卒よろしくお願いします。 *adodbとDAOのどちらか使う必要があるならDAOを使用して作成したいです。 *クエリは使わずに作成したいです。 ○検索フォーム 検索ボタン ID入力テキスト 編集ボタン サブフォーム(データシート型) 編集ボタンを押すと ○編集フォーム 単帳型 *レコード項目 ID プロジェクト名 日付 モジュールNO

    2020/08/04 18:54
  • VBAで実行時エラー1004が出てしまう

    実行時エラー1004で「申し訳ございません。が見つかりません。名前が変更されたか、移動や削除がおこなわれた可能性があります。」と表示されてしまう。 あるフォルダ内にある複数のファイルから、作成日・更新日が最新のファイルのシートを作業中のブックにコピーするVBAなのですが上記のエラーが出てしまい原因が分かりません。 VBA初心者なので基本的なことかもしれませんがアドバイスよろしくお願い致します。 Sub コピー() Dim FileTime As Date Dim MaxTime As Date Dim FileName As String Dim MaxFileName As String With CreateObject("WScript.Shell") 'カレントフォルダを指定 .CurrentDirectory = "C:\Users\○○\Desktop\○○\○○\○○\" End With FileName = Dir("*.xlsx") 'ワイルドカードで拡張子「xlsx」ファイルを取得 Do While FileName <> "" 'ファイルを取得出来なくなるまでループ FileTime = FileDateTime(FileName) '取得したファイルの日時を取得 If FileTime > MaxTime Then '時間を比較 MaxTime = FileTime '日付が大きい場合は格納 MaxFileName = FileName '日付が大きい場合はファイル名を格納 End If FileName = Dir() Loop ShCount = ThisWorkbook.Worksheets.Count '実行したファイルのシート数を取得 Workbooks.Open MaxFileName ←ここでエラーが出る Worksheets(2).Copy after:=ThisWorkbook.Worksheets(ShCount) 'シートの2つ目を指定して末尾に追加 Workbooks(FileName).Close savechanges:=False '取得したファイルを閉じる End Sub

    2020/08/02 19:28
  • VBを覚え始めるタイミング

    VBを覚え始めるタイミング 私は今、事務職でExcelをよく使います。 そろそろVBを覚えたいと思っています。 ところが、Excelの上級レベルの関数やフィルタ、ピボットテーブルなど、まだ完全にExcelをマスターしていません。 どの程度、Excelを扱えるようになったら、VBを学習すると良いでしょうか? 宜しくお願いします。

    2020/08/02 16:35
  • VBA 複数ファイル内をキーワード検索

    VBAを利用して1つのフォルダの中にあるたくさんのファイル内にキーワードが記載されているか検索し、Hitしたファイル名をリストアップしたいです。 具体的には、Cドライブのsampleフォルダ直下にテキストファイルが複数あります。 そのテキストファイルに2019年または2020年という記載があれば、そのファイル名(2019年、2020年どちらでHitしたかも分かるように)をexcelなどにリストアップしたいと考えています。 VBA初心者です。コードも添えて回答頂けると助かります。 よろしくお願いします。

    2020/08/02 14:40
  • VBAでデータの扱い

    VBAでテキストを読み込んで以下のようなデータから電話番号だけ取りこんでCELLに書き込む場合使う変数の形をどのようにすればよいか教えてください TEL;VOICE:09012345678 このデータを Tel2 = Mid(buf, 11, 50) で取ってCellに張り付けた場合、頭の0が表示されません。 電話番号を張り付けるcellをどのようにVBAで設定するのか教えてください。 宜しくお願いします。

    2020/08/01 23:20
  • VBAの変数の使い方

    すみません、VBA初心者です。 日付が3か月後の月末(2020/10/31)より小さいデータを他のシートにコピーするコードを作りたいです。 3か月後の日付を、2020/10/31と直打ちすると正常に機能するのですが、以下のように変数(sLast)を使用すると上手くいきません。 変数の使い方が間違っていますでしょうか? ・上手くいく Criteria1:="<=2020/10/31" ・上手くいかない Criteria1:="<=sLast " アドバイス頂戴できますと幸いです。 Sub 期限管理() Dim sLast As Date sLast = DateSerial(Year(Date), Month(Date) + 3, 0) With Worksheets("Sheet1").Range("A1") .AutoFilter Field:=14, Criteria1:="<= sLast " .CurrentRegion.SpecialCells(xlVisible).Copy .Worksheets("期限管理").Range("A1") .AutoFilter End With Worksheets("期限管理").Activate End Sub

    2020/08/01 19:42
  • 【VBA】SUMIFを別シートから参照する方法

    半端な知識で切り張りして書きましたが SUMIFのコードでコンパイルエラーとなります。 ご教示宜しくお願いします。 'ws1は、アクティブシート(=SUMIFを入力するシート) Set ws1 = Worksheets("アクティブシート") 'ws2は、参照するシート Set ws2 = Worksheets("参照するシート") 'Hani1は、ws2のA2セルから最終行迄 Set Hani1 = ws2.Range("A2:A" & LastRow) 'Hani2は、ws2のH2セルから最終行迄 Set Hani2 = ws2.Range("H2:H" & LastRow) 'n4はアクティブシートの2行目から最終行迄 For n4 = 2 To LastRow2 'アクティブシートのCn4セルから順に、An4セルに合致するものについて Hani1、Hani2を参照してSUIFする Range("C" & n4).Formula = _ "=SUMIF(Hani1,ws1.Range("A" & n4),Hani2)" Next n4

    2020/07/31 04:05
  • マクロをボタンに登録するとエラーになる

    ツールのマクロから実行すると、成功するのですが、そのマクロをフォームコントロールのボタンに割り当てると失敗します。RangeクラスのAutofillメソッドが失敗しました、と。 中身としては、(会社のパソコンなので、コードが書けなくてすみません。) 関数を最終行までオートフィルして、フィルターをかけて0以外を表示させ、そのページを印刷する、という形です。 ただ作成したマクロをボタンにすることはできないのでしょうか?? よろしくお願いします。

    2020/07/29 20:30
  • インデックスが有効範囲にありませんと出てしまう

    VBAで"実行時エラー9 インデックスが有効範囲にありません"と出てしまいます、解決方法を教えていただけないでしょうか? 以下のVBAで上記のエラーが出てしまいます。ちなみに私はVBA初心者です。 VBAの内容としてはとあるブックのシートを丸ごと、そのシートを必要とするブックのシートに貼り付けるというものです。 Sub コピー() Dim ファイル名, 基本ファイル名 Dim i, j As String i = ActiveWorkbook.Name j = ActiveSheet.Name Application.DisplayAlerts = False 基本ファイル名 = Sheets("データリスト").Range("B14").Value →ここでエラー発生 Workbooks.Open 基本ファイル名 If Err.Number > 0 Then MsgBox "『○○』を開けませんでした" & vbCrLf & _ "ファイル名が間違っているか、存在しないか、拡張子が違います" & vbCrLf & vbCrLf & _フォルダ & " に " & vbCrLf & _ 基本ファイル名 & "ファイルがありません" Exit Sub End If Worksheets("リスト").Range("A1:N400").Copy Workbooks(i).Worksheets("リスト").Range("A1:N400").PasteSpecial Workbooks(基本ファイル名).Close SaveChanges:=False →ここでもエラーが出てしまうことがある Sheets(j).Select Application.DisplayAlerts = True MsgBox ("リストを取り込みました") End Sub

    2020/07/27 20:56
  • VBAでフォルダの中の1個のファイルを表示したい

    Windows10、Microsoft 365使用の超初心者です。 毎月1回、一個だけファイルを、フォルダ「計算表」に手動で入れています。 入れるのは、翌月のファイルで、A年B月計算表完成.xlsです。 いま、フォルダ「計算表」に、2年8月計算表完成.xlsが,1個 いれてあるので、エラーが発生します。 毎月1回のエラーを回避するため、何か良い方法を知りたいです。 よろしくお願いします。 Sub 最新計算書ひらく() Dim wb As Workbook Dim ws As Worksheet ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path On Error Resume Next Set wb = Workbooks("2年7月計算表完成.xls") If err.Number <> 0 Then Set wb = Workbooks.Open(ThisWorkbook.Path & "\計算表\2年7月計算表完成.xls") err.Clear End If Set ws = wb.Worksheets("集計") On Error GoTo 0 wb.Activate ws.Select・・・・・・ここでエラーになる End Sub

    2020/07/22 18:13
  • VBAで指定時刻まで一時停止するコード

    VBA初心者です。 業務で使用するため、VBAで指定時刻まで一時停止するコードを作りたいのですが、うまくいきません。 設定したい条件は (1)当日の午前9時から実行 (2)記述しているコードの実行が終了したら、当日の午後6時まで一時停止 (このとき他の業務でExcelを使用するので、Excelの動作を止めないためにDoEventsと記述してOSに制御を移しています) (3)当日午後6時になったら、コードの実行を再開する 以上です。 今のところ、午後6時まで動作が停止せず、すぐに午後6時以降に実行したいコードが実行されてしまいます。 どういうコードを記述すればいいでしょうか?教えてください。 ------------------------------------------------------------------------------------------------------------------ ~(中略)~ Dim PauseTime As Single Dim Start As Variant Dim Finish As Date Dim TotalTime As Variant Start = Now() Do PauseTime = Start + TimeValue("08:59:20") DoEvents Loop While Now() < Finish Finish = TimeValue("18:00:03") ~(中略)~ ------------------------------------------------------------------------------------------------------------------

    2020/07/21 17:53
  • VBAのループ処理について

    お世話になっております。 VBAのループについて教えていただきたいです。 更新ボタンを押した際に自動で計算されるプログラムを組んでおります。 計算のモジュールは「Module_g.InputCalc」で引数は(ActiveCell.Row, "支出"または"粗利益")で呼ぶことができます。 現在のコードだと粗利益の部分も支出の計算で入ってしまうため、粗利益に入ったら粗利益の計算がされるようにしたいです。 その時の判定の取り方を教えていただきたいです。 また、支出・粗利益の中の項目は追加していくことがあります。 コード Sub DateUpdate() With Sheets("HOME") Dim i As Integer For i = 7 To .Cells(Rows.Count, 1).End(xlUp).Row Call Module_g.InputCalc(i, "支出") Next End With End Sub

    2020/07/08 17:43
  • VBAの変数変換のことです

    VBAの変数変換のことです 整数変数=実数変数や実数変数=整数変数でCIntやCSng関数を使わないでOKでしょうか? Dim VAR(20) As Single '単精度浮動小数点数型 (Single) Dim IVARO(20) As Integer '整数型 (Integer) Dim IVAROC(20) As Integer '整数型 (Integer) IVARO(NCD) = VAR(NCD) 'Single to Integer IVAROC(NCD) = CInt(VAR(NCD)) 'Single to Integer これで、IVARO(NCD)とIVAROC(NCD)には同じ値が入っているのですが、 整数=実数でCInt関数を使わないで整数にする構文はOKでしょうか?

    2020/07/08 16:44
  • テキストボックスの日付を他ブックのセルに挿入したい

    Windows10,マイクロソフト365使用の超初心者です。 テキストボックスに日付を入れると、同じフォルダの他ブックのシート1のセルA1に 挿入したいです。この日付は毎月1回だけ変更しています。 次のコードで同じシート内で、やると出来ましたが他ブックにする方法がわかりません。それと西暦でなく、元号で表示したいです。よろしくお願いします。 Private Sub CommandButton95_Click() ActiveSheet.Unprotect Range("$A$1").Value = Format(TextBox2.Text, "00""/""00""/""00") ActiveSheet.Protect End Sub

    2020/07/03 13:18
  • この分類図は何という名称ですか。

    付箋を貼っていきアイデアを分類するときに使う分類図は何という名称ですか。 ダイアグラム? ヒストグラム?こんな感じの名称だったと思うのですがこれらは少し違いました。

    2020/06/29 13:36
  • VBSで空白の制御ができない

    勉強中の身ですが、行き詰ったので質問です。 VBSで2つのCSVファイルを読み込み、内容の異なるレコード、カラムを検知して差異があるレコードを取得させたいです。 CSV自体はカラムごとに「""」で囲ってありカンマ区切りです。 ADOで接続して各カラムごとの比較をする部分で両方とも空白のカラムを比較すると異なったときの分岐に進んでしまいます。 echoでそれぞれのデータを見ても「空白」に見え、実際のCSVも「""」となっています。 lenで長さ0で比較とかtrim後の比較をしてもどちらも同じに見えます。 どのようにすれば「同じ」データとして分岐処理を行えるでしょうか?

    2020/06/28 18:49