Visual Basic

全22569件中61~80件表示
  • 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で設定しています。 その際に、以下の動作となってしまい、ボタンの処理が実行されずに困っています。 解決策ご存じの方いましたら、ご教授をお願いいたします  ①初期表示時に見えているテキストにフォーカスが当たっている  ②初期表示時には見えなかったボタンをスクロール  ③マウスでボタンクリック  ④左上にフォーカスの当たっているテキストがギリギリ見える   ところまで勝手に移動  ⑤クリックしたはずのボタンの処理が実行されない

  • VBA Forがうまくいきません

    画像のコード簡単に説明すると 1~30ランダムで決めて、B6.offset(0,ランダム決めたやつ)にシフトを記号を入力するコードなのですが、これをb6,b8,b10,b12,b16にも同じ事をしたいと思い、 dim ii as long for ii= 6 to 16 step 2 range("b"& ii ).offset(0,ran2) 以下省略でやってみたのですがうまくいきませんでした。 うまくいく方法教えてほしいです よろしくお願いします。 コード汚くてすいません

  • フォームからテーブルへの転記

    下記はフォームに入力した項目をテーブルに転記するコードです。 Private Sub CommandButton1_Click() Dim ws As Worksheet Dim tbl As ListObject Dim newRow As ListRow Dim lastRow As Long Dim i As Long Set ws = Worksheets("シート1") Set tbl = ws.ListObjects("テーブル") ' Find the last row in the table lastRow = tbl.ListRows.Count + 1 ' Add a new row to the table Set newRow = tbl.ListRows.Add(lastRow) ' Add the data to the new row newRow.Range.Cells(1, 1).Value = tbl.ListRows.Count For i = 1 To 7 newRow.Range.Cells(1, i + 1).Value = Me.Controls("TextBox" & i).Value Next i ' Clear the form For i = 1 To 7 Me.Controls("TextBox" & i).Value = "" Next i Sheets("シート1").Select ActiveWorkbook.Save Unload フォーム1 End Sub このコードを実行した時に、最初のセルには、テーブルでの行番号が挿入されますが(1から始まる)挿入される番号を、23300から始めるにはどうしたらいいでしょうか?(23300+行番号)

  • VBA Callについて

    vbaで範囲のデータを消すときに sub test … range(a1:a6).clearcontents … end sub にしてるのですが、 sub リセット range(a1:a6).clearcontents endsub を作っています。 (リセット要らなくないと思うかもしれませんが、必要なのである前提でお願いします) これは上記のやり方(test)と sub test … call リセット … end sub どちらの方が処理軽いですか?

  • 楽天RSS関数の実行終了の検知方法

    楽天MS2のRSSで例えばRssChart関数を発行した後、応答待ちや配信中の文字が表示されます。 この文字列を、VBAで取得することができるでしょうか。 例えばセルB4に関数を記述したとき、B4をVBAから見ても、関数名の文字列が見えるだけです。 目的はRssChart関数の実行終了を確実に知るためですが、現在OnTimeで1秒後ごとに実行していますが、失敗するとことがあります。 2,3秒と大きくすると減るわけですが、効率がわるいです。 配信中まで待つことができればと考えたのです。 他の方法として、全取得後、欠落部分を再取得する方法もかんがえられますが、素のままでできないかと・・・。

  • グラフのデータ範囲をCellsで指定するとエラー

    あるサイトを参考に、VBAでChartType が xlStockOHLC 形式のグラフを作成しようとしています。 ところがデータ範囲の指定方法で .SetSourceData Source:=wsdata1.Range("b1:e100"), PlotBy:=xlColumns あるいは i = 100 .SetSourceData Source:=wsdata1.Range("b1:e" & i), PlotBy:=xlColumns とすれば、正常に動作しますが、 .SetSourceData Source:=wsdata1.Range(Cells(1, 2), Cells(100, 5)), PlotBy:=xlColumns とすると、Rangeメソッドは失敗しました。_worksheetオブジェクト となります。 両者は同じ範囲を指定しているつもりなのですが、どこが間違いでしょうか。 Option Explicit Sub sample() Dim ws As Worksheet Dim wsdata0, wsdata1 As Worksheet Dim topPosition As Double Dim leftPosition As Double Dim width As Double Dim height As Double Dim chartObj As ChartObject Dim chart0, chart1 As chart Dim i As Integer 'グラフを作成するシートを指定 Set ws = Worksheets("Sheet1") Set wsdata0 = Worksheets("saya00") Set wsdata1 = Worksheets("saya01") 'グラフを表示させる位置を取得 ※例としてセル「G2」の位置を取得 With ws.Range("a1") leftPosition = .Left topPosition = .Top End With 'グラフの横と縦のサイズを設定 width = 1000 height = 500 'ChartObjectオブジェクトを作成 Set chartObj = ws.ChartObjects.Add(leftPosition, topPosition, width, height) 'ChartObjectオブジェクトの名前を設定 chartObj.Name = "saya" 'Chartオブジェクト(グラフ)を作成 Set chart0 = chartObj.chart With chart0 'グラフの作成元としてセル「B2」から一覧の範囲を指定 ' .SetSourceData Source:=wsdata.Range("b1:e100"), PlotBy:=xlColumns ' .SetSourceData Source:=ws.Range("b1:e100"), PlotBy:=xlColumns ' i = 100 ' .SetSourceData Source:=wsdata1.Range("b1:e" & i), PlotBy:=xlColumns .SetSourceData Source:=wsdata1.Range(Cells(1, 2), Cells(10, 5)), PlotBy:=xlColumns 'グラフの種類を「折れ線グラフ」に指定 .ChartType = xlStockOHLC 'グラフのタイトルを表示 .HasTitle = True 'グラフのタイトルを設定 .ChartTitle.Text = "saya-1" 'グラフのタイトルのフォントサイズを設定 .ChartTitle.Font.Size = "12" End With '後片付け Set chart0 = Nothing Set chart1 = Nothing Set chartObj = Nothing End Sub

  • VBAスクロールを規制する

    Private Sub Workbook_Open() Sheets("Sheet1").ScrollArea = "A1:AK23" End Sub 上記のコードでA1からAK23までしか選択できないようにしてスクロールを止めてるのですが、 range("BZ24").value="あ" range("BZ24").select を実行した場合、bz24には「あ」と言う文字が入力され、選択されますか? また、選択された時でも画面はA1:AK23から動かないですよね?

  • エクセルで特定のセルのみを任意のタイミングで更新

    エクセルのRANDBETWEEN関数についての質問です。 再計算するたびに,新しい整数の乱数を返すと思いますが, 再計算のたびに,整数を返すのでなく自分のタイミング(マクロでフォームボタンを押したときなど)で実行されるようにしたいです RANDBETWEEN関数が設定されているセルだけを任意のタイミングで更新するのは,どのようにしたら良いでしょうか?

  • VBA MCSC_MONTHBKの色が反映しない

    VBAのUserForm1にCreateWindowExWでカレンダーを追加し、MCSC_MONTHBKの背景色を変えたくSendMessageW hChild, MCM_SETCOLOR, MCSC_MONTHBK, &HFFFF00とコーディングしましたが反映されません、どこが悪いのでしょうか?ご教授頂ければ幸いです。 ちなみに、MCSC_BACKGROUNDの方は色が反映されました。 Windows10Pro 64、Excel2016 32ビットになります 何卒、よろしくお願いします。 UserForm1コード Option Explicit Private Declare Function InitCommonControlsEx& Lib "comctl32" _ (ByVal lpInitCtrl&) Private Declare Function CreateWindowExW& Lib "user32" _ (ByVal dwExStyle&, _ ByVal lpClassName&, _ ByVal lpWindowName&, _ ByVal dwStyle&, _ ByVal x&, ByVal y&, _ ByVal nWidth&, ByVal nHeight&, _ ByVal hParent&, _ ByVal hMenu&, _ ByVal hInstance&, _ ByVal lParam&) Private Declare Function SendMessageW& Lib "user32" _ (ByVal hwnd&, _ ByVal uMsg&, _ ByVal wParam&, _ ByVal lParam&) Private Declare Function MoveWindow& Lib "user32" _ (ByVal hwnd&, _ ByVal x&, ByVal y&, _ ByVal nWidth&, ByVal nHeight&, _ ByVal bRepaint&) Private Const ICC_DATE_CLASSES = &H100& Private Const WM_SETFONT = &H30 Private Const WS_CHILD = &H40000000 Private Const WS_VISIBLE = &H10000000 Private Const MCS_DAYSTATE = 1 Private Const MCM_SETCOLOR = &H100A Private Const MCM_GETMINREQRECT = &H1009 Private Const MCM_GETMAXTODAYWIDTH = &H1015 Private Const WS_CLIPSIBLINGS = &H4000000 Private Const WS_EX_WINDOWEDGE = &H100& Private Const DTM_SETMCCOLOR = &H1006 Private Const MCSC_BACKGROUND = 0 ' 月間背景色を指定 Private Const MCSC_TEXT = 1 ' 選択日付の色 Private Const MCSC_TITLEBK = 2 ' タイトルバーの背景色 Private Const MCSC_TITLETEXT = 3 ' タイトルバーのテキスト色 Private Const MCSC_MONTHBK = 4 ' カレンダーの背景色 Private Const MCSC_TRAILINGTEXT = 5 Private Sub UserForm_Initialize() Dim ii&(1) Dim wd&, ro#, rc&(3) Dim fnt As stdole.IFont Dim i&, buf&(3) Dim hParent As Long Dim hChild As Long Dim fr As IOptionFrame Dim m_hr As MSForms.IControl Dim acc As IAccessible Set fr = Controls.Add("Forms.Frame.1") Set m_hr = fr hParent = m_hr.[_GethWnd] Set acc = fr Set fnt = fr.Font acc.accLocation 0, 0, wd, 0 ro = fr.Width / wd ii(0) = 8 ii(1) = ICC_DATE_CLASSES InitCommonControlsEx (VarPtr(ii(0))) hChild = CreateWindowExW(WS_EX_WINDOWEDGE, _ StrPtr("SysMonthCal32"), 0, _ WS_CHILD Or WS_VISIBLE Or WS_CLIPSIBLINGS Or MCS_DAYSTATE, _ 0, 0, 0, 0, _ hParent, 0, 0, 0) SendMessageW hChild, MCM_SETCOLOR, MCSC_BACKGROUND, &HFFFF00 SendMessageW hChild, MCM_SETCOLOR, MCSC_MONTHBK, &HFFFF00 SendMessageW hChild, MCM_GETMINREQRECT, 0, VarPtr(rc(0)) i = SendMessageW(hChild, MCM_GETMAXTODAYWIDTH, 0, 0) MoveWindow hChild, 0, 0, i + 100, rc(3), 0 With fr .Width = (i + 100) * ro .Height = rc(3) * ro End With End Sub

  • Excel 各クラスによるランキングの合計 VBA

    団体は全部で12支部あります。 メン 1位 8点 2位 7点 3位 6点 4位 5点 以下各クラス(5つ) 1位 4点 2位 3点 3位 2点 4位 1点 リレー 1位 5点 2位 4点 3位 3点 4位 2点 5位 1点 Gセルに各順位、Iセルに各得点の合計で順位を並べたいです。 宜しくお願いします。

  • Excel 二つの範囲をクリアする方法 VBA

    A3~E34とN3~P34の二つの範囲を同時にクリアするVBAを教えてください。宜しくお願いします。

  • Excel 関数を残したままクリアしたい VBA

    セルA3からP34の範囲をクリアしたいのですが、関数までクリアしてしまっています。 Sub CellClear() Range("A3:P34").ClearContents End Sub 関数を残したまま数値だけクリアしたいのです。

  • VBEでの引数を書き方について

    VBE の pdf の出力をする構文の書き方についての質問です。 構文は ExportAsFixedFormat (Type, FileName, Quality, IncludeDocProperties, IgnorePrintAreas, From, To, OpenAfterPublish, FixedFormatExtClassPtr) かと思いますが, Webサイトなどで,調べていると Sheets(ShtName).ExportAsFixedFormat Type:=xlTypePDF, _ FileName:=MyPath & "\" & Sheets(ShtName).Name & ".pdf" のように書かれていて,引数の部分に( ) が使われていません。 なぜでしょうか?

  • 折れ線グラフの線分ごとに色を交互に変える。

    一本の折れ線グラフを描きます。 各折れ線の線分(このつながりが全体の折れ線になる)の偶数番目と奇数番目の色を変えたい。 他言語でグラフを書く場合は、各線分の色を指定できますが、excelの基本機能ではできないと思います。 VBAではこのようなことができるでしょうか。別途データ系列として各線分の色を与えることはできます。 折れ線グラフでなく、棒グラフとしても、各棒グラフの色を変える必要もあります(折れ線が可能なら、棒グラフも可能でしょう) excel-vbaの範囲でどんな可能性があるでしょうか。 可能性のありそうな方法例として、 偶数線分と奇数線分を分けて2系列のデータとします。 X軸だけを考えて、偶数線分の系列は、10-20、30-40、50-60・・・ 奇数線分の系列は20-30、40-50、60-70、・・・ のように描画できれば、それぞれを別の色を指定すればよいです。 これができれば3系列としてもできそうです。

  • 【VBA】Vlookupのエラー処理

    VBAでWorksheetFunction.VLookupを利用しています。 エラーが発生した場合も、「参照先の表をもとに値を表示する」ようにしたいのですが、可能でしょうか。 【参照先の表】  一列目      二列目  あ        か  い        き  う        く  え        け  お        こ  ※エラー時    ん ※「あ」のときは「か」を表示させる。 ※「さ」のときは「ん」を表示させる。 エラー時に「ん」を表示させたいということではなく、 「表を参照して「ん」を表示させたい」という要望です。 (表を変更すればコードを変更せずとも表示を変えられる仕様) 言葉足らずかもしれませんが、ご協力お願いします。

  • VBA Do Until ~ Loop 内にif

    Excel VBAマクロにて、C列のセルのうちOKと書かれたセルのみ塗りつぶすコードを作成したつもりなのですが、動いてくれません。エラー表示も出ません。間違いを指摘して下さる方、あるいは別の書き方があるという方、教えていただけないでしょうか。 下記私が作成したものです。C列にAと書かれたセルが現れるまで処理をするようにしています。 Sub sample() Dim i As Long i = 1 Do Until Cells(i, "C").Value = ”A" If Cells(i, "C").Value = "OK" Then Cells(i, "C").Interior.ColorIndex = 5 End If i = i + 1 Loop End Sub

  • 時間値の表示が期待とおりにならない

    excelのVBAです。 下記のコード1ではセルA1に実行結果のように表示されますが、 コード2では期待した表示になりません。 これは何故でしょうか。期待した表示は 163001 です。 コード1 Sub TimerProc() Range("A1") = Time() End Sub 実行結果 4:30:01 PM コード2 Sub TimerProc() Range("A1") = Format(Time(), "hhmmss") End Sub 実行結果 12:00:00 AM セルの式は 2346/1/3 0:00:00

  • 新規CSVデータの2行目以下を追加するVBA

    新規取得のCSVデータの2行目以下のデータを、ベースのBookファイルに追加するVBAを教えてください 店舗でビジネスをやっており、新しい電子決済端末を導入したところ、売り上げ等クラウドで見れるのですが、手数料のデータをローカルに落としたい場合、月数回の支払日ごとにcsvが分割されていることがわかりました csvファイルは、月6回(5日ごと)のファイルとなって入手できます。画像の上部のようなフォーマットになっています。 複数のファイル(売上用とか決済手数料一覧とか)があるのですが、列はどれも最長AZ列までカバーしていれば問題ありません この月6回配布されるcsvデータをローカルのExcelで分析したいため、毎回入手するたびに、2行目以下のデータを、ベースのBookファイルに追加していきたいのです csvファイルのデータ行数は売上数が毎日変動するため、毎回(6回/月)変動し不定です ネットでコードを探したのですが、いいのがみつからなかったのでここで質問させていただきました なお以前サラリーマンだったときExcel VBAを使っていたので、コードさえあれば実装はできます よろしくお願いします

  • 複数ファイルデータを1つに纏めるチェックボックス有

    過去の質問タイトル『複数EXCELファイル中のデータを1つのファイルへ』、『複数ファイルのデータを1つのファイルへ纏めるマクロ』で大変お世話になっている者です。 HohoPapaさんからご教示頂きましたコードで、チェックボックス以外の値については、出力ファイルへ正常に纏める事が出来ました。  更にお伝えして、入力ファイル中のチェックボックス(リンク設定有り)を出力ファイルへ吐き出すマクロのコードをご教示頂きたく質問させて頂きました。 奥が深く、私にはコードを修正出来るだけの力が有りません。 どうか、お教え下さるようお願いいたします。 ・入力ファイルの記載フォーマットは以下の通りになります。 B列=出力ファイルに付けるタイトルは6行目、データは8行目以降より (出力ファイルには数値として吐き出したいが、入力ファイル中の記載は所々数値以外の形式で記載されている) 数値形式でない記載を数値形式で吐き出すのは困難である為、そのまま吐き出し。 C列=出力ファイルに付けるタイトルは6行目、データは8行目以降より D列=出力ファイルに付けるタイトルは6行目、データは8行目以降より E列=出力ファイルに付けるタイトルは6行目、データは8行目以降より F列=出力ファイルに付けるタイトルは5行目、データは8行目以降より G列=出力ファイルに付けるタイトルは6行目、データは8行目以降より出力ファイルへは、日付表示で吐き出し。 H列=出力ファイルに付けるタイトルは6行目、データは8行目以降より 出力ファイルへは、日付表示で吐き出し。 I列=リンク設定の有るチェックボックス   値はオンにチェックがついており、[リンクするセル』=『$Q$8』 J列=リンク設定の有るチェックボックス   値はオンにチェックがついており、[リンクするセル』=『$R$8』 K列=リンク設定の有るチェックボックス   値はオンにチェックがついており、[リンクするセル』=『$S$8』 L列=関数式『=IF(AND(S8=TRUE,OR(Q8=TRUE,R8=TRUE)),"","右欄も要確認")』が入っています。    M列=リンク設定の有るチェックボックス  値はオンにチェックがついており、[リンクするセル』=『$T$8』 N列=関数式『=IF(AND(S8=TRUE,OR(Q8=TRUE,R8=TRUE)),"合同設備等利用可能",IF(T8=TRUE,"合同設備等利用可能","内部運営管轄と相談下さい"))』が入っています。 Q列、R列、S列、T列=8行目以降より『TRUE』、『FLASE』の文字入っている。 出力ファイルの記載フォーマットは以下の通りになります。 1行目のタイトルセルは、 A列=『参加番号』 B列~K列、N列=上記の入力ファイルのタイトルから A列:2行目以降=入力ファイル名の『課題参加者_23RF3001.xlsx』の『23RF3001』を入力ファイルのB列、C列、D列に記載が有る行数分記載。 B列~K列:2行目以降=上記のB列~K列の入力データから吐き出し N列:2行目以降=上記のN列の入力データから吐き出し