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

関連カテゴリ

次へ  ]
22014件中 121~140件目
  • エクセルVBAでマクロ入りのブックを共有した時

    お世話になります、 エクセルのシートを伝票入力画面に使って データはMDBに格納しています。 (エクセル、MDBとも同一フォルダ) このフォルダをLAN上(NASとか)で 複数ユーザーが同時アクセスをすると エラーになるでしょうか? シート自体書込み(SAVE)は一切行っていません。 デバッグ環境はあるのですが人がいない為 エラーを再現できずに困っています。 よろしくお願い致します。

    2018/10/11 17:16
  • VB.net 登録されている日付の連続性のチェック

    VB.netについて質問です。 下記のようにデータがあったとします。 _________ 日付、コード 1/1、****** 1/1、****** 1/2、****** 1/2、****** 1/2、****** 1/4、****** 1/4、****** 1/7、****** 1/11、****** ・ ・ ・ _______ 登録されていない日付があったときにメッセージを出したいです。 下記のコーディングでは 1/4~1/7の間で(2日連続登録されていない) 1/5、1/6は登録されていません。まで出すのが精一杯です。 ______________________________ '登録されていない日があったときメッセージを出す For i = 0 To DataGridView.RowCount - 2 Dim kyou As Date = DataGridView.Rows(i).Cells(0).Value Dim tsugi As Date = DataGridView.Rows(i + 1).Cells(0).Value Dim ashita As Date = kyou.AddDays(1) Dim asatte As Date = ashita.AddDays(1) Dim shiasatte As Date = asatte.AddDays(1) '2日連続登録データが抜けていたときまでのチェック If kyou = tsugi Or tsugi = ashita Then Else If tsugi = asatte Then MsgBox(ashita & "が未登録です") Else If tsugi = shiasatte Then MsgBox(ashita & "と" & asatte & "が未登録です") End If End If End If Next ______________________________ どんなに日にち離れていても対応できるようなコーディングを教えて欲しいです。 よろしくお願いいたします。

    2018/10/06 19:42
  • VBAでIEの操作をするうえで

    VBAでIEの操作中、webページからのメッセージが表示されるのですが このメッセージをOKする操作方法を教えてください。 ネットでいろいろと調べましたが、うまくできません。 操作に関係あると思われるソースは下記です。 <td colspan=2 class=xl888205><input name='WriteSheet=KanRegist2;Set_R7C1=1;Set_R9C26=-1;' type='SUBMIT' style='width:100%;font-Weight:bold;' OnClick="if(confirm('作業の登録を行います。よろしいですか?')!=true){return false;} if(DtmErrCheck(2)!=true){return false;}" value='登録'></td> 下記マクロで登録ボタンを押すと 作業の登録を行います。よろしいですか? のメッセージが表示されます。これをクリックしたいです。 For Each Obj In objIE.document.all.tags("INPUT") '登録 If Obj.Value = "登録" Then '.value値(ボタンの名称) Obj.Click '.Click Exit For 'ループを抜ける End If Next よろしくお願いします。

    2018/10/05 18:12
  • エクセルのBEEP音でメール送信するには?

    エクセルファイルにエラーが生じた場合にBEEP音を出す仕組みのファイルがあるのですが、PC上で音を感知したらエクセル以外のプログラムからメール送信できるソフトあるいはアプリがあれば教えて頂きたいのですが...。

    2018/10/02 17:38
  • VBA 複数の行を挿入後、挿入以外を削除その3

    しつこくてすみません。 https://okwave.jp/qa/q9541345.html このときは大変お世話になりました。 作業しているうちに間違いに気付きました。 また皆さまの力をおかり下さい。 ナンバー  挿入する行の数  4       5 6       3 8       4 9       1 挿入する行の数は5ですが、ナンバー4の行と合わせると6行になります。 なので「挿入する行の数」は5と記載しても行の挿入は-1の4を挿入してナンバー4の行と合わせて5行になるといったものが望ましいです。 ナンバー  挿入する行の数  4       5(4を挿入) 6       3(3を挿入) 8       4(3を挿入) 9       1(0なので、挿入しない) 最後にもしナンバー9に10行を入れたとしたらどこまで行が挿入されたか、分からなくなります。(やはり色が付いた方が分かると思いますが…) 最後に行を挿入した行の下に「ここまで」と記載した方が分かりやすいかと思いますが、コードの記述方法を教えて頂けたらと思います。 宜しくお願いします。

    2018/10/01 17:00
  • PowerPointVBAについて確認させてくださ

    PowerPointVBAについて確認させてください。 PowerPointのテキストボックスにあるテキストをC:\DebugPrint.Logに出力するプログラムを作成しようとしています。 下記のコードを実行したところ、下記の8行目の「Debug.Print shape.TextFrame.TextRange.Text」の箇所で「指定された値は境界を超えています。」とエラーメッセージが出ます。 解決方法を御教授いただければと思います。 Const g_strLogFile = "C:\DebugPrint.Log" Sub TextBoxToDebugPrint() Dim slide For Each slide In ActiveWindow.Parent.Slides Dim shape For Each shape In slide.Shapes Debug.Print shape.TextFrame.TextRange.Text Next Next End Sub ' デバッグ文字列の出力 Function DebugPrint(ByVal strData As String) ' Debug.Print strData Open g_strLogFile For Append As #1 Print #1, strData Close #1 End Function

    2018/09/27 07:56
  • VBA 複数の行を挿入後、挿入以外を削除その2

    先回はごちゃごちゃしていました。 https://okwave.jp/qa/q9540698.html 今回はwatabe007様より、ヒントを得て、やり易くするように流れを変えました。 ●「挿入」シートにナンバーの数字が1~(100以上)と順次に並んでいます。 「挿入」シート  1  2  3  4  5  6  7  8  9  10  ・  ・  ・  100くらい ●「入力」シートにナンバーの数字、行挿入の数、色分けの三つあります。 「入力」シート ナンバー 挿入する行の数 色   4      5     赤   6      3     黄色  8      4     緑  9      1     青 上記を入力し、マクロ実行すると「挿入」シートのナンバー4に5行挿入、6に3行挿入、8に4行挿入、9に1行挿入 「挿入」シート  1  2  3  4 (行挿入) (行挿入) (行挿入) (行挿入) (行挿入)  5  6 (行挿入) (行挿入) (行挿入)  7  8 (行挿入) (行挿入) (行挿入) (行挿入)  9 (行挿入)  10  ・  ・  100くらい マクロ実行で、シート名「入力」に記載していたナンバーと挿入した行以外を削除 「挿入」シート  4 (行挿入) (行挿入) (行挿入) (行挿入) (行挿入)  6 (行挿入) (行挿入) (行挿入)  8 (行挿入) (行挿入) (行挿入) (行挿入)  9 (行挿入) といった流れが望ましいです。 宜しくお願いします。

    2018/09/26 15:39
  • エクセル2010でマクロが動きません

    こんにちは。 マクロ超初心者です。 頑張ってエクセル2016でマクロ作成しましたが、エクセル2010で途中から動かず…。 何が悪いんでしょうか… ここから動きません…と書いたところから動きません(涙) Private Sub シート編集_Click() Application.ScreenUpdating = False Dim i Dim Sh1 As Worksheet Dim Sh2 As Worksheet Dim Sh4 As Worksheet Set Sh1 = Worksheets("あ") Set Sh2 = Worksheets("い") Set Sh4 = Worksheets("う") Dim dayCutoff As Date dayCutoff = Application.InputBox("年月日を入力してください", "お支払期限 年月日を入力", Format(Date, "yyyy/mm/dd")) Sh4.Range("D12").Value = DateSerial(Year(dayCutoff), Month(dayCutoff) + 2, 0) 'お支払期限 dayCutoff = Application.InputBox("年月日を入力してください", "請求書発行 日を入力", Format(Date, "yyyy/mm/dd")) Sh4.Range("AC3").Value = Format(Date, "yyyy/mm/dd") '発行日 Sh1.Cells.Clear With Sh1 'edit .Range("A2") = "番号" .Range("B2") = "会社名" .Range("C2") = "判定" .Range("D2") = "契約番号" .Range("E2") = "拠点" .Range("F2") = "税率" .Range("G2") = "月額(税抜)" .Range("H2") = "消費税" .Range("I2") = "月額(税込)" .Range("J2") = "今回" .Range("K2") = "全回" .Range("L2") = "店番" ここから動きません………… For i = 3 To Sh2.Cells(.Rows.Count, 1).End(xlUp).Row .Cells(i, 1) = Sh2.Cells(i, 2) .Cells(i, 2) = Sh2.Cells(i, 4) .Cells(i, 4) = Sh2.Cells(i, 3) .Cells(i, 5) = Sh2.Cells(i, 4) & "(" & Sh2.Cells(i, 6) & ")" .Cells(i, 6) = Sh2.Cells(i, 9) & "%課税" .Cells(i, 7) = Sh2.Cells(i, 8) .Cells(i, 8) = Sh2.Cells(i, 10) .Cells(i, 9) = Sh2.Cells(i, 11) .Cells(i, 10) = Sh2.Cells(i, 12) .Cells(i, 11) = Sh2.Cells(i, 7) .Cells(i, 12) = Sh2.Cells(i, 2) If Sh1.Cells(i, 10) > Sh1.Cells(i, 11) Then .Cells(i, 3) = "×" Else .Cells(i, 3) = "〇" End If If Sh1.Cells(i, 3) = "×" Then .Cells(i, 2) = "" End If Next i End With '空白行を削除 Dim j As Integer, myFlag As Boolean Dim c As Range With Worksheets("edit").Range("A2").CurrentRegion For j = .Rows.Count To 2 Step -1 myFlag = False For Each c In .Cells(j, 2) If c.Value <> "" Then myFlag = True Exit For End If Next If myFlag = False Then .Rows(j).Delete End If Next End With MsgBox "データの転記が終わりました" End Sub

    2018/09/25 18:41
  • VBA 複数の行を挿入後、挿入以外を削除

    知恵をお借りください。 A10に5行分挿入、A13に2行分挿入、A14に1行分挿入、A16に2行分挿入 以下がコードです。 Dim n As Long n = Worksheets("Sheet1").Range("A1").Value With Worksheets("Sheet2") .Range("A10").Resize(n).EntireRow.Insert .Range("A10").Resize(n).EntireRow.Interior.Color = vbYellow .Activate End With Dim k As Long k = Worksheets("Sheet1").Range("A2").Value With Worksheets("Sheet2") .Range("A13").Resize(n).EntireRow.Insert .Range("A13").Resize(n).EntireRow.Interior.Color = vbRed .Activate End With Dim m As Long m = Worksheets("Sheet1").Range("A5").Value With Worksheets("Sheet2") .Range("A14").Resize(n).EntireRow.Insert .Range("A14").Resize(n).EntireRow.Interior.Color = vbGreen .Activate End With Dim ka As Long ka = Worksheets("Sheet1").Range("A10").Value With Worksheets("Sheet2") .Range("A16").Resize(n).EntireRow.Insert .Range("A16").Resize(n).EntireRow.Interior.Color = vbBlue .Activate End With マクロ実行後、行の並び方がバラバラになっています。 ↓イメージ図 https://mega.nz/#!yUwXHTLK!TSZvMJ1CaiTi-OoX-1j9IeNleuXesrzU5O7o2vG-svI 理想図に整えるにはどうすれば良いのでしょうか? また、マクロで行を挿入したら、不要な行を削除するコードも教えてくださればありがたいです。 ↓イメージ図 https://mega.nz/#!fMRDAKAJ!GHMpiagpn-O_0aaMhrHOozFd8WHHkSQzOS-fSCInw-g 宜しくお願いします。

    2018/09/24 17:42
  • 数値を入力、ボタンをクリックして行を挿入

    下記はA1に「5」を入力し、マクロを実行すると、A10行より5行分挿入するといったコードですが、シート1のA1に「5」を入力し、マクロを実行するとシート2のA10行より5行分挿入するといったコードを教えてくれませんか? 宜しくお願いします。 Sub Test() Range("A10").Resize(Range("A1").Value).EntireRow.Insert End Sub

    2018/09/24 12:08
  • VBA 毎回データが違っても応用できるコード2

    先ほどの回答をありがとうございました。 https://okwave.jp/qa/q9539233.html 手順が違っていましたので、再度質問させて頂きたいと思います。宜しくお願いします。 O列をフィルタで昇順にします。 2以上の数値(#N/Aも含む)が入った行のP列をコピーして同じ行のQ列に値でペーストするといった流れです。 見やすくするため、ペーストしたものは赤い文字にしてくれたらありがたいです。 O列    P列    Q列 2     79     79 2     79     79 3     #N/A    #N/A 4     #N/A    #N/A 5     80     80 8     80     80 8     80     80 10     80    80 11     80    80 18     #N/A   #N/A #N/A    84    84 #N/A    80    80       ↑    ↑      コピー  値でペースト

    2018/09/21 10:37
  • VBA 毎回データが違っても応用できるコード

    O列をフィルタで昇順にして、2以上の数値(#N/Aも含む)をコピーして同じ行のQ列に値でペーストするといった流れです。 下記のコードはマクロで記録で作成したものです。 Range("O632:O705").Select O632から最後尾のO705までのセルをコピー  Range("Q632").Select 同じ行のQ632セルを選択し、値でペーストする。 データは毎回バラバラなので (O400~O800だったり)、応用できるコードを教えて頂けないでしょうか? 宜しくお願いします。     ActiveWorkbook.Worksheets("シート1").AutoFilter.Sort.SortFields.Clear     ActiveWorkbook.Worksheets("シート1").AutoFilter.Sort.SortFields.Add Key:= _         Range("O1:O705"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption _         :=xlSortNormal     With ActiveWorkbook.Worksheets("シート1").AutoFilter.Sort         .Header = xlYes         .MatchCase = False         .Orientation = xlTopToBottom         .SortMethod = xlPinYin         .Apply     End With     Range("O632:O705").Select     Selection.Copy     ActiveWindow.SmallScroll Down:=-48     Range("Q632").Select     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _         :=False, Transpose:=False     ActiveWindow.SmallScroll Down:=56 End Sub

    2018/09/20 17:53
  • VBA 型が一致しません

    初めまして マクロを習い始めた初心者なのですが、ユーザーフォームを用いて印刷設定を行おうとしています。 (最後のSelectは最終的にPrintoutにします) 今まではループ処理で一枚ずつ印刷するような設定にしていましたが、他の人もプリンターを使用しているのでスプールをまとめようと考えました。 ユーザーフォームに使用しているのはトグルボタンとコマンドボタンのみです。 必要なシートの名前を付けたトグルボタンで印刷するシートを選べるようにしています。 下記のように記述しましたが、途中型が一致しませんと出て困っています。 ご教授願います。 Private Sub CommandButton1_Click() Dim TgLB_val(4) As Boolean Dim TgLB_cap(4) As Variant TgLB_cap(1) = TB1.Caption: TgLB_cap(2) = TB2.Caption TgLB_cap(3) = TB3.Caption: TgLB_cap(4) = TB4.Caption Dim sEnt_sh As Variant Dim i As Long For i = 1 To 4 If TgLB_val(i) Then sEnt_sh(UBound(sEnt_sh)) = TgLB_cap(i) →ここでいつも型が一致しませんとでます。TgLB_cap の方をstring型からvariant型に変更しても出ています。 ReDim Preserve sEnt_sh(UBound(sEnt_sh) + 1)  End If Next i Stop Sheets(sEnt_sh).Select End Sub

    2018/09/19 12:56
  • VBA シートがなかったら「シートがない」と表示

    P1セルに「テスト」の名称を付ける。 P2セルにVLOOKUP計算式を入れる。最後尾までオートフィルでコピー。 といったコードです。 Sub テスト()  Range("P1").Select     ActiveCell.FormulaR1C1 = "テスト" nLast = Cells(Rows.Count, 1).End(xlUp).Row     Range("P2:P" & nLast).Formula = "=VLOOKUP(K2,履歴!D:E,2,0)" End Sub もし「履歴」というシートがなかったら、「シートがありません」というメッセージウィンドウを」表示したいです。 https://oshiete.goo.ne.jp/qa/1043563.html を参考に Sub テスト() On Error GoTo err_handle  Range("P1").Select     ActiveCell.FormulaR1C1 = "テスト" nLast = Cells(Rows.Count, 1).End(xlUp).Row     Range("P2:P" & nLast).Formula = "=VLOOKUP(K2,履歴!D:E,2,0)" err_handle: If Err = 9 Then MsgBox "シートAAAが存在しません。" Exit Sub End If End Sub と記述しましたが、エラーメッセージは表示しませんでした。 どのように追記したら良いでしょうか? 宜しくお願いします。

    2018/09/18 15:22
  • エクセルシートのコピーとシート名の変更&集計表

    エクセルの集計に関して初心者です。1シートに同じ内容で各顧客のデータを同じフォームで入力しています。これを新しい顧客が出てくるたびにシートコピーしているのですが、VBAでボタンでコピーできるようにしたいです。 /Users/inouehirotaka/Desktop/スクリーンショット 0030-09-17 11.55.37.jpg さらにこれらの各シートの内容を集計表で一覧にしたいのですが、良い関数もしくはVBAでの転記方法をお教えください。 /Users/inouehirotaka/Desktop/スクリーンショット 0030-09-17 11.56.28.jpg 色々VBAで試してみたのですが、どうもうまくいきません。ご教授よろしくお願いいたします。

    2018/09/17 12:08
  • 入力規則のドロップダウンリストを連動

    以下のサイトを参考に別ブックからデータを参照する方法で苦戦しています。 http://www.eurus.dti.ne.jp/yoneyama/Excel/vba/vba_validation.html Sub name_1()   Dim lCol As Long, lRow As Long   Dim i As Long, nName As String Dim Wb As Workbook ←追記 Set Wb = Workbooks("MyBook.xls") ←追記     On Error Resume Next     With Wb.Sheets("Sheet2")       lCol = .Range("A1").End(xlToRight).Column       ActiveWorkbook.Names("項目リスト").Delete       ActiveWorkbook.Names.Add Name:="項目リスト", _         RefersTo:=.Range(.Cells(1, 1), .Cells(1, lCol))       '----名前の定義       For i = 1 To lCol         lRow = .Cells(1, i).End(xlDown).Row         nName = .Cells(1, i).Value         ActiveWorkbook.Names(nName).Delete         .Range(.Cells(1, i), .Cells(lRow, i)).CreateNames Top:=True       Next i     End With End Sub Sub Macro2()   name_1   With Range("A2:A10").Validation     '--入力規則を削除     .Delete     '--入力規則を設定     .Add Type:=xlValidateList, _       Formula1:="=項目リスト"   End With   '--B2セルへ入力規則を設定   With Range("B2:B10").Validation     .Delete     .Add Type:=xlValidateList, _       Formula1:="=IF(A2="""",A2,INDIRECT(A2))"   End With End Sub Private Sub Worksheet_Change(ByVal Target As Range)   Dim c As Range Dim Wb As Workbook ←追記 Set Wb = Workbooks("MyBook.xls") ←追記     If Not (Application.Intersect(Target, Range("A2:B10")) Is Nothing) Then     name_1     Application.EnableEvents = False       If Target.Column = 1 Then         If Target.Value = "" Then           Target.Offset(0, 1).Value = ""         Else           Set c = Wb.Sheets("Sheet2").Range(Target.Value).Find(Target.Offset(0, 1).Value, lookat:=xlWhole) ←ここでエラー           If c Is Nothing Then             Target.Offset(0, 1).Value = ""           End If         End If       End If       If Target.Column = 2 Then         If Target.Value = "" Then           Target.Offset(0, -1).Value = ""         End If       End If     Application.EnableEvents = True     End If End Sub どのように改変すれば良いのでしょうか?

    2018/09/14 19:52
  • VS2010 コンパイル方法がわかりません

    Win7で使用していたアプリをWin10で使おうとしたところ、セットアップはできるのものの、うまく動作しません。どうやら dllファイルに問題があるようです。 ネットを調べたところ、Win10 で dllを再コンパイルすれば問題が解消するケースがあるようなで、試してみたいのですがコンパイルの方法が判りません。 ソースは WinXpの頃に作成されたもので、xxxClassLibrary というフォルダに保存されています。 フォルダの内容は、いくつかのフォルダ(Foldersとします)とセッティングファイルのようなものがあります。 Foldersの各フォルダの内容は *.cs ファイル(おそらくC#のソース)です。 セッティングファイルのようなものは、以下の3つです。 app.config xxxSettings.cs xxxSettings.settings VS2010のプロジェクトファイルはありません。 抽象的な質問で申し訳ありませんが、よろしくお願いいたします。

    2018/09/14 18:49
  • マクロ 重複削除の選択範囲を全てにしたい

    K列全てを選択し、重複削除をする流れをマクロ記録で作成しました。 コードはA1セルからS7731セルまでですが、毎回データの量が変わってしまうので、S7731セルまでではなく、全てにしたいですが、どうすればよいのですか? 宜しくお願いします。 Sub 重複削除() Columns("K:K").Select ActiveSheet.Range("$A$1:$S$7731").RemoveDuplicates Columns:=11, Header:= _ xlYes End Sub

    2018/09/14 10:29
  • マクロ 行を切り取ってペーストでエラーになる

    J列に「0」と「#N/A」の行を切り取って集計対象外シートに貼り付けるといったコードです。 何故か途中でエラーになります。 どこが間違っておりますか? 宜しくお願いします。 Dim LastRow As Long LastRow = Cells(Rows.Count, 10).End(xlUp).Row For i = 1 To LastRow If Cells(i, 10) = "0" Or Cells(i, 10) = "#N/A" Then Rows(i).Cut Sheets("集計対象外").Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) End If Next i

    2018/09/13 13:36
  • VBSで新規フォルダ作成について

    デスクトップ に新規フォルダを作成する際に配置を指定することは可能でしょうか? 方法があればどなたかご教示願います。

    2018/09/13 10:58

ピックアップ