Excel VBA質問箱 IV

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

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


274 / 3841 ページ ←次へ | 前へ→

【76957】Re:VBAで文字列中に「スペース」を挿入し...
発言  β  - 15/4/20(月) 19:58 -

引用なし
パスワード
   ▼初投稿 さん:

こんばんは
正規表現を使えば、ループなしでも処理できると思いますが「平文」で。
サンプルです。 A1 にある文字列を B1以降に分割します。

Sub Test()
  Dim s As String
  Dim p As String
  Dim i As Long
  
  s = Range("A1").Value
  For i = 1 To Len(s)
    If LenB(StrConv(Mid(s, i, 1), vbFromUnicode)) = 2 Then
      If Right(p, 1) = "]" Then p = p & "["
      p = p & "x"
    Else
      If Len(p) > 0 And Right(p, 1) <> "]" Then p = p & "]"
      p = p & "[x]"
    End If
  Next
  
  If Right(p, 1) <> "]" Then p = p & "]"
  
  Range("A1").Parse p, Range("B1")
  
End Sub
・ツリー全体表示

【76956】VBAで文字列中に「スペース」を挿入したい
質問  初投稿  - 15/4/20(月) 19:13 -

引用なし
パスワード
   はじめまして
VBAについて質問させてください

あるシステムから出力したデータをエクセル上に貼り付けると以下のようになります

【サンプル】
A B C 全角文字列D 全角文字列E F

※ここで貼り付けられる文字列はそれぞれのセルに代入されるのではなく、
一つの文字列として1セルに貼り付けられます

【やりたいこと】
A B C 全角文字列 D 全角文字列 E F

のようにそれぞれの値を個別のセルに代入したい

1.文字列中の「全角文字列」を判別し、後に「半角スペース」を挿入したい
2.「半角スペース」を区切りとしてそれぞれの文字列をセルに代入したい

【条件】
・「全角文字列」の場所は一定ではない
・「全角文字列」は不特定の単語

お手数をおかけしますがご教示の程、よろしくお願いいたします。
・ツリー全体表示

【76955】Re:背景色
お礼  トキノハジメ  - 15/4/20(月) 10:56 -

引用なし
パスワード
   ▼β さん:>▼kanabun さん:>▼独覚え学 さん:


色々ありがとうございました。やっと上手くいきました。
又、宜しくお願い致します。
・ツリー全体表示

【76954】Re:iframe内でのIE制御(PHP?)
発言  独覚  - 15/4/20(月) 9:29 -

引用なし
パスワード
   Mougと知恵袋もか…
・ツリー全体表示

【76953】Re:iframe内でのIE制御(PHP?)
発言  独覚  - 15/4/20(月) 9:14 -

引用なし
パスワード
   ▼ハゲブルー さん:

ここの掲示板の基本方針からです。

>マルチポストについて
>別のサイト(掲示板)にまったく同じ目的の投稿をすることを、一般に「マルチポスト」といいます。
>当質問箱では、マルチポストは原則認めています。
>つまり、ほかのサイトで質問したことをこのサイトで質問してもかまわないということです。

>しかし、もしマルチポストをするのなら、可能な限り「○○にも同じ質問を出しました」ということを宣言してください。
>そして、仮に他のサイトで解決したのなら、ここにも必ずその顛末を書いてください。
>質問しっぱなし、というのはモラルに反します。
>「解決したからいいや」というのではありません。

>また、マルチポストを明示的に禁止しているサイトとのマルチポストをしてはいけません。

「エクセルの学校」もマルチポストを認めていますから両方の掲示板に「どこそこにも同じ質問をしています」と
報告しておいてください。
・ツリー全体表示

【76952】Re:iframe内でのIE制御(PHP?)
回答  ハゲブルー E-MAIL  - 15/4/19(日) 20:47 -

引用なし
パスワード
   上記のURLはwwwを付け加えないと見れません。
介護事業所検索のサイトです。

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

【76951】iframe内でのIE制御(PHP?)
質問  ハゲブルー E-MAIL  - 15/4/19(日) 20:44 -

引用なし
パスワード
   現在、下記のサイトの「詳細情報を見る」というところをクリックする
マクロを作成しております。
kaigokensaku.jp/13/index.php?action_kouhyou_pref_search_list_list=true&PrefCd=13

ただ、iframeタグのname="resultListFrame"のsrcがAjaxで管理されているようで
うまく操作できません。
「詳細情報を見る」をクリックするためにはどうすればよろしいでしょうか?

よろしければご助力の程よろしくお願いいたします。

Sub tesutesu()
Dim objIE As Object
Dim objin As Object
 Dim ie As Object

  'オブジェクトを格納する変数
  Dim objShell As Object, objWindow As Object

  'シェルのオブジェクトを作成する
  Set objShell = CreateObject("Shell.Application")
  
  'ウインドウの数だけまわすぞ
  For Each objWindow In objShell.Windows
    'TypeNameでオブジェクト変数のタイプを表示する
    MsgBox "タイプは:" & TypeName(objWindow.Document)
    Debug.Print "タイプは:" & TypeName(objWindow.Document)
    'HTMLDocumentだったら
    If TypeName(objWindow.Document) = "HTMLDocument" Then
      'URLとタイトルを表示する
      Debug.Print "URL:" & objWindow.Document.url
      Set objIE = objWindow
      MsgBox "方法1. : " & objIE.Document.url
      Set objin = objIE.Document.getElementById("resultListFrame")
      
      If objin Is Nothing Then
      MsgBox "ありません"
      End If
       Set objA = objin.Document.getElementsByTagName("a")
      For n = 0 To objA.Length - 1
    '※ HTMLのalt=ログインを探したいので、.InnerTextでもなく.Valueでもなく .OuterHTMLを使用
    If InStr(objA(n).OuterHTML, "詳細情報") > 0 Then 'HTML文字列の中から見つけたら
      objA(n).Click '見つけたINPUTタグのオブジェクトをクリック
      WScript.Sleep 1000  '1秒待つ 1000で1秒
      Exit For
    End If
  Next

 End If
  Next
  
  
End Sub
・ツリー全体表示

【76950】Re:一行おきに選択
お礼  たかひろ  - 15/4/19(日) 13:11 -

引用なし
パスワード
   β様

たかひろです。
ありがとうございました。

まさに、私が実現したかったことです。
とっても助かりました。

意味のない範囲を選んだ時の対応など、こちらも勉強になりました。

年を取っていて、なかなか、理解力も乏しく自分自身もどかしいのですが、
もっと、理解して自分のものにしていけるようにします。

本当に、ありがとうございました。
・ツリー全体表示

【76949】Re:一行おきに選択
発言  β  - 15/4/18(土) 21:29 -

引用なし
パスワード
   ▼たかひろ さん:

追伸です。
何かをするためにSelectする必要はありません。
↑のコードでいえば、最後の r という変数に目的の領域が入っています。
ですから、r.Interior.Color 等、直接参照可能ですので。
念のため。
・ツリー全体表示

【76948】Re:一行おきに選択
発言  β  - 15/4/18(土) 21:24 -

引用なし
パスワード
   ▼たかひろ さん:

要件を誤解しているかもしれませんが・・

Sub Test()
  Dim i As Long
  Dim r As Range
  
  If TypeName(Selection) <> "Range" Then
    MsgBox "セル領域を選択してから実行してください"
    Exit Sub
  End If
  
  If Selection.Areas.Count > 1 Then
    MsgBox "複数のセル領域は選択できません"
    Exit Sub
  End If
  
  If Selection.Rows.Count < 3 Then
    MsgBox "3行未満のセル選択では意味がありません"
    Exit Sub
  End If
  
  For i = 1 To Selection.Rows.Count
    If i Mod 2 > 0 Then
      If r Is Nothing Then
        Set r = Selection.Rows(i)
      Else
        Set r = Union(r, Selection.Rows(i))
      End If
    End If
  Next
  
  r.Select
        
End Sub
・ツリー全体表示

【76947】一行おきに選択
質問  たかひろ  - 15/4/18(土) 21:09 -

引用なし
パスワード
   お世話になっております。

自分で都度選択する、”任意のセル範囲(例えば、A2:B10など)内において、1行置きにセルを選択する”方法を教えて頂きたいです。

”任意のセル範囲において、1行おきに”網掛けしたり、色を塗ったり、することはできるようになりました。

しかしながら、時に応じて、一行おきに網掛け、色塗り、文字の大きさを変えたりするなど、多岐に作業する必要ケースが多くなってきました。

従いまして、色塗り等まで、おこなってしまうのではなく、「”自分で都度選択する任意の範囲内において、1行置きにセルを選択する”ところまでにとどめる」ことを実現したいです。

ちなみに、1行おきに網掛けする場合は、下記のように記述致しました。

宜しくお願いいたします。

********
Sub 網掛け()


 Dim i As Integer, S As Integer, E As Integer
 S = Selection(1).Column
 E = Selection(Selection.Count).Column
 
 For i = Selection(1).Row To Selection(Selection.Count).Row Step 2
 
  Range(Cells(i, S), Cells(i, E)).Interior.Pattern = xlGray16
 
 Next i
End Sub

****************
・ツリー全体表示

【76946】Re:背景色
発言  β  - 15/4/17(金) 22:11 -

引用なし
パスワード
   ▼kanabun さん:

>◆の範囲が 1つ少なくなってしまって... (^^

ですね。

.Resize(,.columns.count+1).Interior.ColorIndex = xlNone

ですかね。
・ツリー全体表示

【76945】Re:背景色
発言  kanabun  - 15/4/17(金) 18:58 -

引用なし
パスワード
   ▼β さん:

>>(最終セルが余分かも知れないですけど?)
>
>ということでしょうから
>
>With Range("A1", Cells(1, Columns.Count).End(xlToLeft).Offset(,-1))
>
>ですね。

ハイ。そのとおりですけど、でも、そうすると、

  With Range("A1", Cells(1, Columns.Count).End(xlToLeft).Offset(,-1))
    .Interior.ColorIndex = xlNone '◆

◆の範囲が 1つ少なくなってしまって... (^^
・ツリー全体表示

【76944】Re:背景色
発言  β  - 15/4/17(金) 18:13 -

引用なし
パスワード
   ▼kanabun さん:

なるほど。

>(最終セルが余分かも知れないですけど?)

ということでしょうから

With Range("A1", Cells(1, Columns.Count).End(xlToLeft).Offset(,-1))

ですね。
・ツリー全体表示

【76943】Re:背景色
発言  kanabun  - 15/4/17(金) 17:35 -

引用なし
パスワード
   あ、それなら
こうでいいんじゃないでしょうか

Sub Test2()
  Dim c As Range
 
  With Range("A1", Cells(1, Columns.Count).End(xlToLeft))
    .Interior.ColorIndex = xlNone
    For Each c In .Cells
      If c.Value = c.Offset(, 1).Value Then
        c.Resize(, 2).Interior.ColorIndex = 39
      End If
    Next
  End With
 
End Sub

(最終セルが余分かも知れないですけど?)
・ツリー全体表示

【76942】Re:背景色
発言  β  - 15/4/17(金) 15:42 -

引用なし
パスワード
   ▼トキノハジメ さん:

>ぜひ、VBAでの方法でしりたいのです。
>

では、今まででてきた計算式のロジックを書いただけですが。
アップされたサンプル、1行目だけではなく2行目、3行目もあるのかな?
と思えるんですが、とりあえず1行目だけです。

それと、薄紫 って、どの色をイメージしておられるのか不明だったので適当に。
エクセルバージョンによって色合いも異なるようですし、お気に召さなければ別のColorIndexなり
別のColorコードなりで処理してください。

Sub Test()
  Dim c As Range
  Dim flag As Boolean
  
  With Range("A1", Cells(1, Columns.Count).End(xlToLeft))
    .Interior.ColorIndex = xlNone
    For Each c In .Cells
      flag = False
      If c.Value = c.Offset(, 1).Value Then
        flag = True
      Else
        If c.Column > 1 Then
          If c.Value = c.Offset(, -1).Value Then flag = True
        End If
      End If
      
      If flag Then c.Interior.ColorIndex = 39
    Next
  End With
  
End Sub
・ツリー全体表示

【76941】Re:背景色
質問  トキノハジメ  - 15/4/17(金) 15:01 -

引用なし
パスワード
   ▼独覚 さん:
有難うございます。
>それともVBAでの方法が知りたいということでしょうか?

ぜひ、VBAでの方法でしりたいのです。

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

【76940】Re:背景色
発言  独覚  - 15/4/17(金) 14:55 -

引用なし
パスワード
   ▼トキノハジメ さん:
それであれば今迄に挙がった方法で可能です。
(私の方法の場合は実際の範囲にあわせないとなりませんが。

それともVBAでの方法が知りたいということでしょうか?
・ツリー全体表示

【76939】Re:背景色
質問  トキノハジメ  - 15/4/17(金) 14:47 -

引用なし
パスワード
   ▼β さん:▼kanabun さん:▼独覚 さん:

有難うございます。

問いがややこしいので整理します。

  A  B  C  D  E  F  G  H  I  J  K  L  M  N  1 1.1 1.2 1.3 1.4 1.4 1.6 1.8 2.1 2.3 2.3 2.3 2.6 2.9 3.2

上記A より T まで 20個ぐらい  1列の中で D1,E1 が同じ数値で、I1,J1,K1

が同じ数値であった時に、同じであれば、D1,E1とI1,J1,K1 同じ数値か゛あるとい

うことですべて薄紫いろを背景色にする。

説明がまずくてすみません。 宜しくお願いいたします。 
・ツリー全体表示

【76938】Re:背景色
発言  β  - 15/4/17(金) 13:34 -

引用なし
パスワード
   ▼独覚 さん:

あぁ!
昇順なので、複数個ということは連続しているセルのなかの1つだということですね。
勉強になります!
・ツリー全体表示

274 / 3841 ページ ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free