Visual Basic

全22590件中1~20件表示
  • 縦に並んだセルを別シートに横並びにコピーする方法

    EXCELのシートAでH2セルからH95セル(94セル)まで数字が並んでいます。(途中の空白はなく、10セル埋まっている場合もあれば90セル埋まっている場合もあります。) その数値をシートBのセルに横12×縦7にてコピーをしたいです。 offset等駆使していますがうまくいきません。 どなたかご教示願います。 サンプル追加しました。

  • セルに入った数値を別シートに横に並べる方法について

    EXCELのシートAでH2セルからH95セル(94セル)まで数字が並んでいます。(途中の空白はなく、10セル埋まっている場合もあれば90セル埋まっている場合もあります。) その数値をシートBのセルに横12×縦7にてコピーをしたいです。 offset等駆使していますがうまくいきません。 どなたかご教示願います。

  • VBA 最終行取得がうまく出来ず上書きされてしまう

    こんにちは。 Excelを使った日報を使っており、集計シートを作成しています。 日報は1日ごとに1枚のシートを振り分けていて、必要項目だけを抽出して【1日】【2日】【3日】…と続けて集計シートに転記したいです。 シート【1日】は問題なく転記出来たのですが、【2日】を転記すると【1日】のデータに上書きされてしまいます。 【2日】以降を【集計シート】の最終行を取得して次の行から貼り付けていく方法を教えていただけないでしょうか? また【1日】から【31日】までのシートを連続で抽出貼り付けが出来るVBAも教えていただけると嬉しいです。 ただシートは【月集計】と日毎のシート以外にもいくつかあるため、「【月集計】以外のシートで指定」するコードは使えないです。 Sub 抽出3() '抽出 Dim i, j As Long i = 5 j = 3 With Worksheets("1日") Do While .Cells(i, "B").Value <> "" If .Cells(i, "A").Value <> "" Then For x = 1 To 13 Worksheets("月集計").Cells(j, x).Value = .Cells(i, x + 1).Value Next x j = j + 1 End If i = i + 1 Loop End With End Sub

    • haru516
    • 回答数2
  • エクセルVBA:定義された名前を取得

    例えば、A1:A5の範囲に「範囲1」という名前が定義されているとします。A1のセルを選択したときに、「範囲1」を返すVBAはどのようなものになりますか。 A1を選んだ時、A1と重複する値を「範囲1」全体から消すようなときに使います。

    • ticktak
    • 回答数2
  • エクセルで全シートの一覧表を作りたい(VBA)

    エクセルでシート名を一覧(目次)にして品名をクリックしたらそのシートに飛ぶようにしたいのですが。 エクセルのシートに複数の担当者が製品毎の仕様を入れていく作業をしているのですがシートが増えてくると重複で作成されるシートが出始めています。 そこで「目次」のシートを作成して、新規シート作成時に「目次作成」ボタンでシート名一覧表が更新されるようにしたいのです。 そして目次のシート名クリックで当該シートに飛ぶようにしたいのですが、当方永遠のVBA初心者ですのでよろしくお願い致します。

  • なんとなくの質問ですが。。。

    Ontime、、、のvbaで、よく止まったりする気がする。 考えられるコードミスはありますか? よくある、、こんなことあった!昔。みたいな 体験談が、聞きたいです。

    • ゆず
    • 回答数1
  • PADによるメール添付資料自動保存

    PADでメールの添付資料を自動保存しております。 更に発展的に使用したいのですが、以下のようなことは可能でしょうか? ①メール件名に、ABABと記載があれば、ファイル名にもABABと追加する ②メールアドレスの@以下で送付してきた企業を判断し、企業名をファイルにいれる 結構高度な知識が必要ですか?

  • VBA Exit Subが機能しない

    以下のVBAコードが正常に機能しません。 Sub A() 処理 On Error Goto L1 処理 On Error Goto L2 処理 Exit Sub L1: MsgBox エラーメッセージ1 Exit Sub L2: MsgBox エラーメッセージ2 Exit Sub End Sub これを実行すると、エラーが出ておらず、正常に処理が行われているのに、エラーメッセージ2が表示されます。 間違いを指摘してください。

  • VBA 配列 条件分岐で編集して別の配列に格納

    いつもありがとうございます。 VBAの配列を編集して、別の配列に格納出来なくて困ってます。ネットとかで確認しながら色々試してるのですが、うまくいきません。 8列目の値が2の時、対象行の内容を別の配列にコピーする方法です。 すみませんが教えて貰えないでしょうか?よろしくお願いします。

  • フォルダ監視vba

    下記、20秒置きにフォルダを監視し、変化があればバックアップのファイルを発動させるマクロを組みました。エクセルを開くとマクロは動くようにしています。初めは動いているのですが、途中から動きません。監視してるフォルダに、ファイルを増やしても、反応がありません。どこかおかしな点、わかる方教えていただけないでしょうか。 Option Explicit Dim previousFiles As Collection Sub StartMonitoring() ' 初回実行時にファイルリストを取得 Set previousFiles = GetFileList() Application.OnTime Now + TimeValue("00:00:20"), "MonitorFolder" End Sub Sub MonitorFolder() Dim currentFiles As Collection Dim fileName As Variant Dim fileAdded As Boolean Dim file As Variant Dim fileArray() As Variant Dim i As Integer fileAdded = False Set currentFiles = GetFileList() ' Collection を配列に変換 ReDim fileArray(1 To currentFiles.Count) i = 1 For Each file In currentFiles fileArray(i) = file i = i + 1 Next file ' 現在のファイルリストと以前のファイルリストを比較 For Each file In fileArray On Error Resume Next If IsEmpty(previousFiles(file)) Then fileAdded = True Exit For End If On Error GoTo 0 Next file If fileAdded Then ExecuteBatchFile MsgBox "File added detected. Batch file executed." End If Function GetFileList() As Collection Dim folderPath As String Dim fileSystem As Object Dim folder As Object Dim file As Object Dim fileList As New Collection folderPath = "C:\Path\To\Your\Folder" ' 監視するフォルダのパスを設定 Set fileSystem = CreateObject("Scripting.FileSystemObject") Set folder = fileSystem.GetFolder(folderPath) For Each file In folder.Files fileList.Add file.Name, file.Name Next file Set GetFileList = fileList End Function Sub ExecuteBatchFile() Dim batchFilePath As String batchFilePath = "C:\Path\To\BackupScript.bat" ' バッチファイルのパスを設定 Shell batchFilePath, vbNormalFocus End Sub ' 現在のファイルリストを保存 Set previousFiles = currentFiles ' 再度監視を開始 StartMonitoring End Sub Private Sub Workbook_Open() StartMonitoring End Sub

    • ゆず
    • 回答数1
  • マクロ・テーブルの色のついた列だけコピーしたい

    Excelマクロで悩んでいます。どのように書いたらいいかご教授ください。 ■実行したい内容 添付の画像をご参照いただければと思いますが、指定したテーブルの色のついた行だけを別のシートにコピーしたいです。 ■補足 ・添付の画像では行数を16程度にしていますが実際に使いたい内容では1000行近くあるのと、同シート内でコピーしてほしくない列もあるため、テーブルで指定しています。(図でA~G列はコピー対象だけどH以降は色がついていてもコピー対象外) ですのでテーブルとしていますが、セル指定での範囲選択でなければできない、という話であればそこにはこだわりません。 ・図の結果にあるように、「フォルダB-userB-△」のように、必ず行はセットで転記したいです。 自分で調べてかいた内容では、どうしても「フォルダB-userF-〇」のように、上に詰めて転記されてしまいました。「フォルダBに色をつけたらB~G列すべて色がつく」ようにすれば自分が書いた内容でも対処はできると思いますが、それでは(やりたい内容上)意味がないので、ご相談した次第です。 よろしくお願いします。

  • VBA 動的配列(2次元)を引数として参照渡しする

    VBAで表題の処理を実装しようとしているのですが、コンパイルエラー「ByRef引数の型が一致しません」が出ます。型は合っているように見えるのですが、どうにも解決できません。どなたか原因と対策についてご教示いただけないでしょうか。Public Sub test1() Dim TestArray() As String: ReDim TestArray(1 To 10000, 1 To 4) test2 TestArray End Sub Public Sub test2(ByRef TestArray() As String) ~処理~ End Sub

    • usatos
    • 回答数2
  • VBA 数式の入力方法

    セルの連結や文字列の扱いで混乱してエラーばかり起こしています。 画像にて状況を説明致します。 ・行を表す、変数i は11 です。 ・N11セルに、画像上部の数式となる様にVBAでコードを入力したいです。 (→C11セルが10桁なら、頭に0を加えて11桁にする。そうでなければ   その数字を入力する) ・「Range("N" & i).Formula = 」の続きのコードをご教示願います。 宜しくお願いします。

  • エラーがたまにでます

    下記マクロはネットで見つけたものですが、綺麗に動くのですがたまにエラーがでます パスのエラー?で止まるのですが 何か治したいほうが良いところがもしわかれば教えていただきたいです Sub updFileName() 'フォルダパスを宣言 Dim path As String Dim j As Integer 'A2セルの文字をパスに設定 path = Cells(2, 1) & "\" j = 1 'B4セルからファイル名を更新 Do Until Cells(j + 3, 1) = "" 'A列のファイル名をB列のファイル名に更新 Name path & Cells(j + 3, 1) As path & Cells(j + 3, 2) j = j + 1 Loop End Sub ネットは、これです↓ https://skainoblog.com/renamefile/ なんか、変更が途中で止まる、、ことがあるんです。そしたらパスのエラー?とでてました

    • ゆず
    • 回答数4
  • Excel VBA:独習&練習問題サイト

    Excel VBAを独習でき、練習問題を解いてコードをジャッジしてくれるサイト 現在Paizaに課金し、Pythonの説明動画と、演習問題を解いてPython 3のベンダー資格をとることができました 同じことをExcel VBAに関してPaizaでやろうと思いましたが、Excel VBAの講座はないようです オンラインで、Excel VBAの独習ができ、演習問題でコードを書いて、それが正しい解を出力するかジャッジするサイトはあるでしょうか? 最初~4カ月くらいは無料で試したいです 良ければ課金します OS:Windows 11/10

    • ketae
    • 回答数2
  • VBA既存シートからリスト形式の作成

    Excel VBAの質問です (Office2021を使用) 給与計算のための労働時間計算を、事務スタッフがクラウド上の計算サービスに、スタッフ15名分ほどを、1人1人手入力をし、入力間違いが起こっていました クラウドのサービス会社に問い合わせてみたところ、指定の列をもつCSV形式にして、一括インポートができることがわかりました で、まず各人のタイムカードの時刻から労働時間を自動計算するシートをわたしがつくり、全人の労働時間が出たので、あとは時給を掛けるだけでその月の支払い総額がわかるようにしました つまり全員の労働時間のシートを、同じ形にしました で、あまり詳しくないですが、マクロ(自動記録)で、各シートにある氏名と時間列のセル(具体的にはB2 G41 H41 J41 K41)を、画像のようなリストの形に流し込みたいと思いました しかし2行目(スタッフNo.0001番)は自動で入ったものの、3行目(スタッフNo.0002)以降の追加のコードがわかりません スタッフは月によって変動しだいたい13~MAXでも20名いるので、シート数は最大20はあります 【質問orお願い】 ・その月につくったスタッフ人数分のシートの総数を確認し、各労働時間(各シートのB2 G41 H41 J41 K41)を、画像のような列に入れ込むコードはどう書いたらよいでしょうか? アイデアをいただきたい、または親切な方いましたらコード書いていただけると助かります 【回答上のご注意】 ・回答は解答(答え)を求めての投稿です ・昭和的な「あとは自分で考えろ」的なものは求めていません (登山の途中でいなくなる登山ガイドのようなものです) ・不明点あれば追加情報をお伝えします 動作の結果責任は問いませんのでよろしくお願いします

    • ketae
    • 回答数4
  • pdf 複数開かずに確認

    pdfが30件程度あります 開かず中身を確認する方法はありますか?プレビューだとパソコンが固まって中身を、すばやく確認できません

    • ゆず
    • 回答数1
  • vbaの勉強方法について

    独学で、vbaを習得したいです! ただ、きっかけは仕事が忙しく、とてもじゃないけど余裕が持てない。。 のが嫌すぎて、はじめました。 なので、無理やり作ってなんとか動かしてた、という感じで、最初に作ったのは途中で不具合が出たりして、全く身についてません。 本当に習得なんてほど遠く、業務中に、あ、これ効率化できるのでは?と閃いたら必死でvbaをネットで探して切り取りつぎはぎだらけ、本を見て繋いで、という感じです。最近はここに書けば答えてくださる優しい方を頼るだけで、ちょっと、あかんな、勉強せな、と思います。 私のマクロレベルは、1人で困難なく作れたのが、昨日の話ですが最終行まで、昇順に並べる、ぐらいかと思います。 難しすぎて、仕事を早く終わらせたい、という目的がなければ、やる気起きなかったです。本当にわけがわからない世界です。でも、すぐに、文を考え、希望のマクロを作れる人を尊敬します。 皆さんはどうやって学んだのですか?? 参考に、させてください。 よろしくお願いします。

    • ゆず
    • 回答数5
  • リストにある文字が検索列にあれば印

    A列にリストがあり、C列のセル内に リストの5桁の数字があれば、C列にチェック(字を赤くするなど)が入り確認が可能になるマクロを組みたいです。下記はネットで探してきて、コピーして動かしたのですが、End ifに対するifがありませんが出て、その後Loopに対するForがありません、と出ました。 下記は合ってますか? Sub Sample1() Dim i As Long, k As Long, myStr As String Dim myFound As Range, myFirst As Range For i = 2 To Cells(Rows.Count, "A").End(xlUp).Row myStr = Cells(i, "A") Set myFound = Range("C:C").Find(what:=myStr, LookIn:=xlValues, lookat:=xlPart) If Not myFound Is Nothing Then Set myFirst = myFound GoTo 処理 Do Set myFound = Range("C:C").FindNext(after:=myFound) If myFound.Address = myFirst.Address Then Exit Do GoTo 処理 処理: For k = 1 To Len(myFound) If Mid(myFound, k, Len(myStr)) = myStr Then myFound.Characters(Start:=k, Length:=Len(myStr)).Font.ColorIndex = 3 End If Next k Loop End If Next i End Sub

    • ゆず
    • 回答数3
  • VS2022でNugetパッケージの入れ方

    VS2022で.NetFramework4.0を使いたいです。 https://qiita.com/diontools/items/b193ae8394161fc26698#net-framework-4--45-の場合 「ダウンロードした Nuget パッケージを .zip にリネームし、その中の /build/.NETFramework/ 以下を C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\ に上書きすることで配置完了です。」とありますが、具体的にリンク先のどのファイルをダウンロードすればよいのでしょうか。