Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1 / 3719 ページ 前へ→

【80009】Re:VBA文字列分割
発言[NEW]  γ  - 18/6/22(金) 22:36 -

引用なし
パスワード
   参考出品。牛刀かもしれません。

Sub test()
  Dim s As String, t As String
  Dim textData
  
  s = "1=2 3=4 5=AAA 7=8 9=AA BB CC 10=11"

  With CreateObject("VBScript.RegExp")
    .Pattern = "(\d+=)"
    .Global = True
    t = .Replace(s, ",$1")
  End With
  textData = Split(Mid(t, 2), " ,")
  '検証
  Debug.Print Join(textData, vbCrLf)
End Sub
・ツリー全体表示

【80008】Re:VBA文字列分割
回答[NEW]  hatena  - 18/6/22(金) 20:01 -

引用なし
パスワード
   解決済みですが、面白そうだったので、コード書いてみました。

Sub test2()
  Const str = "1=2 3=4 5=AAA 7=8 9=AA BB CC 10=aa bb"
  Dim TextData() As String
  Dim i As Long, Pos As Long

  TextData = Split(str, "=")
  For i = 0 To UBound(TextData) - 2
    Pos = InStrRev(TextData(i + 1), " ")
    TextData(i) = TextData(i) & "=" & Left(TextData(i + 1), Pos - 1)
    TextData(i + 1) = Mid(TextData(i + 1), Pos + 1)
  Next
  TextData(i) = TextData(i) & "=" & TextData(i + 1)
  ReDim Preserve TextData(i)

  '結果確認
  Debug.Print Join(TextData, vbCrLf)
End Sub
・ツリー全体表示

【80007】CTRL + TAB切り替え時にイベント発生させ...
質問[NEW]  りった  - 18/6/22(金) 12:35 -

引用なし
パスワード
   CTRL + TABで、ブラウザからEXCELに切り替えた際にマクロで処理をしたいのですが、
Worksheet_Activateは呼ばれないようです。
呼ばれるようにする方法 又は 代替案をご教示頂けますでしょうか?

やりたいこと
ブラウザ上で動作するアプリへの入力を簡単にしたい。
具体的には下記イメージ
CTRL+TABで、ブラウザからEXCEL切り替えする
→マクロで、入力すべきデータ1をクリップボードに入れる。
TABで、ブラウザアプリのデータ1貼付け位置に移動。
CTRL+Vで貼り付け。
CTRL+TABで、ブラウザからEXCEL切り替えする
→マクロで、入力すべきデータ2をクリップボードに入れる。
TABで、ブラウザアプリのデータ2貼付け位置に移動。
CTRL+Vで貼り付け。
以下延々と、
CTRL+TAB→CTRL+TAB→TABxN→CTRL+V→
CTRL+TAB→CTRL+TAB→TABxN→CTRL+V→
CTRL+TAB→CTRL+TAB→TABxN→CTRL+V→・・・
・ツリー全体表示

【80006】Re:VBA文字列分割
お礼[NEW]  はる  - 18/6/21(木) 17:00 -

引用なし
パスワード
   よろずやさん

ありがとうございます。
参考にさせて頂いたところ上手く出来ました。
とても助かりました。
・ツリー全体表示

【80005】Re:VBA文字列分割
回答[NEW]  よろずや  - 18/6/21(木) 16:27 -

引用なし
パスワード
   ベタですが。

Option Explicit

Sub test()
Const str = "1=2 3=4 5=AAA 7=8 9=AA BB CC 10=11"
Dim Cpos As Long, Spos As Long, Epos As Long
Dim TextData() As String, Count As Long
  Spos = 1
  For Cpos = 1 To Len(str)
    Select Case Mid(str, Cpos, 1)
      Case " "
        Epos = Cpos
      Case "="
        If Epos > Spos Then
          Count = Count + 1
          ReDim Preserve TextData(1 To Count)
          TextData(Count) = Mid(str, Spos, Epos - Spos)
          Spos = Epos + 1
        End If
    End Select
  Next Cpos
  If Cpos > Spos Then
    Count = Count + 1
    ReDim Preserve TextData(1 To Count)
    TextData(Count) = Mid(str, Spos, Cpos - Spos)
  End If
  Stop
End Sub
・ツリー全体表示

【80004】VBA文字列分割
質問  はる  - 18/6/21(木) 10:58 -

引用なし
パスワード
   「1=2 3=4 5=AAA 7=8 9=AA BB CC 10=11」このような文を=の右辺と左辺をセットで配列に格納したいのですが、何かいい方法はないでしょうか?
現在はSplitを使ってスペース区切りで分割していたのですが...
スペース区切りだと「9=AA BB CC」の部分が全て分かれて格納されてしまいます。
例として
TextData (1) 1=2
     (2) 3=4
     (3) 5=AAA
     (4) 7=8
     (5) 9=AA BB CC
     (6) 10=11
このように配列に入れたいです。
・ツリー全体表示

【80003】Re:ダイアログの操作
発言  γ  - 18/6/16(土) 22:43 -

引用なし
パスワード
   > このダイアログに、保存先、ファイル名をVBAで指定できたらと思っています。
ダイアログを表示中はそのマクロ(test2)が稼働中なはずなので、
別のマクロを動かすわけにいかないのではないですか?
test2を改変するしかないと思います。
ですから、既に指摘されているように、test2の内容を示さないことには
前に進みません。
・ツリー全体表示

【80002】Re:ダイアログの操作
発言  よろずや  - 18/6/15(金) 19:28 -

引用なし
パスワード
   ▼教えて欲しい人 さん:
>VBAからBook2を開き、下記のコードを実行するとTest2という
>マクロが実行されダイアログが表示されます。
>
>Application.Run "Book2!Test2"
>
>このダイアログに、保存先、ファイル名をVBAで指定できたらと思っています。
>
>よろしくお願いいたします。

Book2!Test2 の中身は秘密ですか?
そこはいじらず、呼び出し元でなんとかしたい?
なんか一休さんの禅問答みたい。
・ツリー全体表示

【80001】Re:SendMessageで全角文字を書き込むには
発言  よろずや  - 18/6/15(金) 19:24 -

引用なし
パスワード
   ▼山田 さん:
>>EnumChildWindows を使って Debug.Print して探しましょう。
>
>EnumChildWindowsにウィンドウのハンドルを渡して探しましたが取得できませんでした。
>コールバック関数の中にDebug.Printを入れましたが、一度もコールバック関数が呼び出されていないようです。

ウィンドウが無いのかもしれませんね。
(例えば、ACCESSのフォームだとフォーカスの当たったコントロールのみがウィンドウを持ち、フォーカスが当たってないコントロールはウィンドウではない。)
・ツリー全体表示

【80000】Re:ダイアログの操作
回答  教えて欲しい人  - 18/6/15(金) 17:58 -

引用なし
パスワード
   VBAからBook2を開き、下記のコードを実行するとTest2という
マクロが実行されダイアログが表示されます。

Application.Run "Book2!Test2"

このダイアログに、保存先、ファイル名をVBAで指定できたらと思っています。

よろしくお願いいたします。
・ツリー全体表示

【79999】Re:ダイアログの操作
回答  よろずや  - 18/6/15(金) 16:00 -

引用なし
パスワード
   >マクロを実行しファイル保存ダイアログが表示されます。
その部分のマクロを見せてください。
・ツリー全体表示

【79998】ダイアログの操作
質問  教えて欲しい人  - 18/6/15(金) 14:55 -

引用なし
パスワード
   あるExcelファイルのVBA操作で別のExcelでマクロを実行し
ファイル保存ダイアログが表示されます。
そのダイアログにパスとファイル名を指定して実行したいです。
どのようにしたらできますか?
・ツリー全体表示

【79997】Re:Workbooks.Closeで閉じない
お礼  ねむ  - 18/6/14(木) 20:22 -

引用なし
パスワード
   なるほど、そういう仕様があったのですね。
ご提示いただいたontimeを使う方法でいけました!
ありがとうございました。
・ツリー全体表示

【79996】Re:Workbooks.Closeで閉じない
回答  よろずや  - 18/6/13(水) 22:40 -

引用なし
パスワード
   ht tp://yiaowang.web.fc2.com/programing/vba_xls_tips/workbook_open.html

OnTime でCloseするのがよろしいかと。
・ツリー全体表示

【79995】Re:SendMessageで全角文字を書き込むには
質問  山田  - 18/6/13(水) 22:02 -

引用なし
パスワード
   >EnumChildWindows を使って Debug.Print して探しましょう。

EnumChildWindowsにウィンドウのハンドルを渡して探しましたが取得できませんでした。
コールバック関数の中にDebug.Printを入れましたが、一度もコールバック関数が呼び出されていないようです。
・ツリー全体表示

【79994】Workbooks.Closeで閉じない
質問  ねむ  - 18/6/13(水) 21:36 -

引用なし
パスワード
   こんばんわ
質問させていただきます

「起動.xlsm」「処理.xlsm」の2つのファイルを作りました

「起動.xlsm」のThisWorkbook内には

Private Sub Workbook_Open()

  Workbooks.Open Filename:=ThisWorkbook.Path & "\処理.xlsm", ReadOnly:=True

End Sub

という記述をし、

「処理.xlsm」のThisWorkbook内には

Private Sub Workbook_Open()

  Workbooks("起動.xlsm").Close
  Workbooks("処理.xlsm").Close savechanges:=False
  
End Sub

と記述しました。

しかし「起動.xlsm」を開いても、「処理.xlsm」が閉じてくれずに開いたままになってしまいます。
これを、閉じるようにするにはどのように記述すればよいでしょうか。

よろしくお願いいたします。
・ツリー全体表示

【79993】Re:エラーが出てしまいます。どこを修正...
お礼  KAZUE  - 18/6/13(水) 17:19 -

引用なし
パスワード
   会社で試してみました!
できました! ありがとうございます。
また、何かあったときに、よろしくお願いします。

>▼よろずや さん:
>>▼KAZUE さん:
>>>'小計
>>> With sh2  ←ここにいれてみました
>>> Dim r As Range
>>>
>>>こうすると
>>>コンパイルエラー End With が必要です。
>>
>>End With は、入れ子にできます。
>>入れてください。
>>入れたら、sh2 を参照したい部分の頭にピリオドを追記しましょう。
・ツリー全体表示

【79992】Re:エラーが出てしまいます。どこを修正...
発言  KAZUE  - 18/6/13(水) 8:37 -

引用なし
パスワード
   ありがとうございます。
今から会社に行って試してみます。

また、結果を後程書き込みます。

▼よろずや さん:
>▼KAZUE さん:
>>'小計
>> With sh2  ←ここにいれてみました
>> Dim r As Range
>>
>>こうすると
>>コンパイルエラー End With が必要です。
>
>End With は、入れ子にできます。
>入れてください。
>入れたら、sh2 を参照したい部分の頭にピリオドを追記しましょう。
・ツリー全体表示

【79991】Re:SendMessageで全角文字を書き込むには
回答  よろずや  - 18/6/12(火) 13:02 -

引用なし
パスワード
   ▼山田 さん:
>FindWindowExでテキストボックスを探そうとしましたがうまくいきません。
>クラス名"Edit"では見つかりませんでした。
>クラス名がわからないテキストボックスのハンドルを取得するにはどうしたらいいでしょうか。

EnumChildWindows を使って Debug.Print して探しましょう。
・ツリー全体表示

【79990】Re:エラーが出てしまいます。どこを修正...
回答  よろずや  - 18/6/12(火) 12:57 -

引用なし
パスワード
   ▼KAZUE さん:
>'小計
> With sh2  ←ここにいれてみました
> Dim r As Range
>
>こうすると
>コンパイルエラー End With が必要です。

End With は、入れ子にできます。
入れてください。
入れたら、sh2 を参照したい部分の頭にピリオドを追記しましょう。
・ツリー全体表示

1 / 3719 ページ 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free