Visual Basic

全22585件中81~100件表示
  • 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秒と大きくすると減るわけですが、効率がわるいです。 配信中まで待つことができればと考えたのです。 他の方法として、全取得後、欠落部分を再取得する方法もかんがえられますが、素のままでできないかと・・・。

    • qhtsige
    • 回答数1
  • グラフのデータ範囲を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

    • qhtsige
    • 回答数1
  • 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セルに各得点の合計で順位を並べたいです。 宜しくお願いします。

    • nkmyr
    • 回答数4
  • Excel 二つの範囲をクリアする方法 VBA

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

    • nkmyr
    • 回答数2
  • Excel 関数を残したままクリアしたい VBA

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

    • nkmyr
    • 回答数1
  • 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系列としてもできそうです。

    • qhtsige
    • 回答数1
  • 【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

    • qhtsige
    • 回答数7
  • 新規CSVデータの2行目以下を追加するVBA

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

    • ketae
    • 回答数4
  • 複数ファイルデータを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列の入力データから吐き出し

  • 複数ファイルのデータを1つのファイルへ纏めるマクロ

    マクロの実行で、Excel形式の約400個のファイル中のデータを1つの出力ファイルへ纏める為のマクロを作成したいのですが、VBAの初心者で、スクリプトの書き方が分からず大変困っております。 入力ファイルの中身は頻繁に追加、削除を繰り返しており、そのたびに入力ファイルを目視確認後、出力ファイルを手動で修正している状況でございます。 大変お手数ですが、マクロがお分かりの方がいらっしゃいましたら、ご教示を宜しくお願い致します。 ・入力ファイルは、以下ような名前になっております。 課題参加者_23RF3001.xlsx 課題参加者_23RF3005.xlsx 課題参加者_23RF3072★.xlsx 課題参加者_23RF3073.xlsx 課題参加者_23RF3199.xlsx 課題参加者_23RF3543.xlsx ・入力ファイルのデータは、添付しました画面イメージの通りで、  フォーマットは全て同じです。 ・出力ファイルに吐き出す入力データはB列~K列とN列になります。 ・出力ファイルのタイトルは、1番目に呼び出したファイルのB列~K列とN列を使う。 ・出力ファイルのA列のデータは、入力ファイル名の『23RF3001』、『23RF3543』などを入力データ分入れる。 ・出力ファイルのタイトルに使う、入力ファイルのタイトルは以下のようになっています。   B列~E列のタイトルは、6行目、7行目が結合されたセルに入っています。  F列のタイトルは、5行目、6行目、7行目が結合したセルに入っています。  G列~H列のタイトルは、6行目、7行目が結合されたセルに入っています。  I列~K列のタイトルは、7行目のセルに入っています。  N列のタイトルは、6行目、7行目が結合されたセルに入っています。 ・出力ファイルへ吐き出したい、入力ファイルデータの範囲は、  B列~K列の8行目以降とN列の8行目以降のデータになりますが、  『職員番号』、『名前』、『部門』に記載が有る行のみを出力ファイルへ吐き出します。  N列はリストの最後の行まで文字が入力されていますが、  N列についても、上記の『職員番号』、『名前』、『部門』に記載が有る行のみを出力ファイルへ吐き出します。 ・出力データへ吐き出す時の書式フォーマットは以下の通りになります。  A列=文字形式  B列=数値形式  C列~F列=文字形式  G列、H列=日付形式  I列~K列=チェックボックス(フォームコントロール形式(入力データと同じ形式))  N列=文字形式 ・入力データは今の所50行まで入力可能としています。

  • 複数EXCELファイル中のデータを1つのファイルへ

    同じシート名、同じフォーマットで記載されている約400個のEXCELファイルから、『Participant List』というシート名のB列~H列、8行目~50行の範囲の記載を1つのEXCELファイルに纏めるVBAスクリプトを作成し実行したいのですが、VBAが全く分からず大変困っております。 マクロを実行した時に、入力ファイルと出力ファイルの保存ホルダーを聞いて指定出来るように出来た良いと思っています。 何方か、お分かりでしたらどうぞお力添えをお願いいたします。 <詳細> ・400個の入力EXCELファイルには、『Participant List』、『特定類型』の2つのシートが入っており、今回の入力用シートは『Participant List』になります。 ・今回抜き出したい記載は、『Participant List』シート中のB列~列、8行目~50行の範囲の記載になります。 ・『Participant List』シート中のB列の6行目と7行目のセルは結合しており、各列のタイトルは以下の通りになっています。  このタイトル名を出力ファイルの1行目へデータの各列のタイトルとして付けて、2行目以降より400個の入力ファイル中のデータを連結したいです。   B列:6,7行=『職員番号(nimsID)』     C列:6,7行=『名前(Name)』       D列:6,7行=『部門(Research Center, Division)』   E列:6,7行=『グループ(Group)』   F列:6,7行=『役職(Title)』   G列:6,7行=『開始年月(Start)』   H列:6,7行=『終了年月(End)』 ・出力ファイル名や出力のシート名は特に考えておりません。 ・入力データは以下ような記載のフォーマットになります。   B列=『職員番号(nimsID)』       例:14769     C列=『名前(Name)』         例:田中 一郎    D列=『部門(Research Center, Division)』 例:総合開発・情報部門   E列=『グループ(Group)』   例:科学リーダー   F列=『役職(Title)』     例:リーダ-   G列=『開始年月(Start)』  例:2023/5/1   H列=『終了年月(End)』   例:2023/5/31 ・入力ファイル名の例=科学登録者_23BB3001.xlsx            科学登録者_23BB3005.xlsx            科学登録者_23BB3405.xlsx ※拙い口足らずな説明となってしまいましたが、どうぞ宜しくお願い致します。

  • マクロのコピペについて

    に実装する際の2回目の処理について助けてください。 Sub Action1or2() Static ChkNext As Boolean If ChkNext = False Then ChkNext = True MsgBox "1回目の押下です。" ' ' Macro1 Macro Range("L9").Select Selection.Copy Sheets("様式2(管理表)").Select Range("C10").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("様式1-1(作業用) ").Select Range("C9:K9").Select Application.CutCopyMode = False Selection.Copy Sheets("様式3(チェック表)").Select Range("B9").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("様式1-1(作業用) ").Select Range("L9").Select Application.CutCopyMode = False Selection.Copy Sheets("様式4(22F倉庫用) ").Select Range("D9").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Sheets("様式1-1(作業用) ").Select Else ChkNext = False Call Action2 End If End Sub Sub Action2() MsgBox "2回目の押下です。" 'ここに2回目の実行コードを記述 End Sub 2回目に実行ボタンをクリックした際にSheets("様式1-1(作業用) ")のアクティブセルと("Sheets様式2(管理表"))&"様式3(チェック表)")&"様式4(22F倉庫用) ")のA列にアクティブセルの値とイコールの値がある場合、アクティブセルの2行下の行を選択してコピーを行い、各シートの対象セルの行へ貼り付けをする場合どのような記述をすれば良いかご教示ください。 よろしくお願いします。

  • VBA MSXML2.XMLHTTPで通信エラー

    毎日使用しているシステムにてAccess2003 VBAでの通信で 数日前から突然エラーが出て通信できなくなりました。 下記のSENDの部分で エラー -2416697208 (800c0008)になります。   With CreateObject("MSXML2.ServerXMLHTTP.6.0") .Open "POST", strUrl, False .SetRequestHeader "Content-Type", "application/x-www-form-urlencoded" .Send (strParam) strResult = .ResponseText End With 端末の環境はWindows7 ブラウザはIE11 Windows Updateやセキュリティーなど 一切変更などしていないのですが 急にエラーが出る部分がどうしても分からず 仕事に支障が出て困っております。 他のノートパソコンへシステムのこの機能だけを入れると 正常に動いたりします。 ノートパソコンも同じくWindows7 ブラウザはIE11です。 解決方法があればお教え願いたいです。 よろしくお願いいたします。