Visual Basic

全22571件中61~80件表示
  • exeファイルをプログラムから操作する。

    お世話になります。 VisualStudio2019(C#またはVB)で下記を実装したいと思っています。 ①あるプログラム(1.exe)のフォーム内にいくつかある指定のボタンを押す。  ⇒ウィンドウを取得、ウィンドウハンドルを取得してボタン押下 ②①の操作でプログラム(2.exe)が起動する。 ③2.exeプログラムの複数あるテキストボックスの中から指定のテキストボックスに文字を入力  ⇒ウィンドウを取得、テキストボックスのウィンドウハンドルを取得してテキストに値をセット いろいろサイトを探したのですが、「まさにコレ」といったものがなく困っています。 もしご教授いただければ幸いです。 よろしくお願いいたします。

  • visualbasic datagridview

    VisualBasic 2013 を利用してWindows Formアプリケーションを構築しております。 DataGridViewを配置してデータベースよりデータ抽出した結果を表示しております。 表示レコードが複数行存在する場合にはスクロールバーが表示されているのですが、スクロールバーの表示が小さいため以下のような方式で制御できないかと考えております。 ★実現したいこと  ボタン「↑」を配置しボタンクリックで上側へのスクロール制御  ボタン「↓」を配置しボタンクリックで下側へのスクロール制御 大変お手数お掛けいたしますがご存じの方がいらっしゃいましたらご教授のほどよろしくお願いいたします。 以上です。

  • 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