Excel VBA質問箱 IV

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

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


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

【78793】変数と変数の結合(連結)
質問  ちょろすけ  - 17/1/29(日) 19:07 -

引用なし
パスワード
   宜しくお願い致します。
例えば以下のマクロを実行した際に、EXCELのシートに入力される値の希望は
111,222,333,なのですが、1,2,3,となってしまいます。
何か良い方法は無いでしょうか?

Sub test()

  Dim i As Long, MyQty1 As Long, MyQty2 As Long, MyQty As Long
  
  MyQty1 = 111
  MyQty2 = 222
  MyQty3 = 333
  
  For i = 1 To 3
  
  ActiveCell.Offset(0, 1).Select
  ActiveCell.Value = MyQty + i
  
  Next i

End Sub
・ツリー全体表示

【78792】Re:エクセルの指定セルをテキストデータ...
お礼  かわかみまめお  - 17/1/25(水) 0:56 -

引用なし
パスワード
   γ様

御教示どうもありがとうございます。

1.1つ前のγ様の投稿で頂きましたアドバイスを元に自分で試行錯誤の上、

Open File_name & "_j.txt" For Output As #1

Open ThisWorkbook.Path & "\" & File_name & "_j.txt" For Output As #1

に変更したところ、うまく動きました!


2.しかしながら、今回、γ様の投稿で頂きました、
先に、 
File_fullpath = ThisWorkbook.Path & "\" & File_name & "_j.txt"
としておき、後で、
Open File_fullpath For Output As #1
として使う、という記述方法の方が、今後複雑になったときのことを考えると、
応用も効き、より適切なのだと思いました。

次につなげたいと思います。

お陰様で、今回必要なことが自動できるようになりました。
ご丁寧に、御教示頂きどうも有難うございました。
・ツリー全体表示

【78791】Re:エクセルの指定セルをテキストデータ...
回答  γ  - 17/1/24(火) 7:09 -

引用なし
パスワード
   '左上のセルの値をファイル名にする
  File_name = Cells(Selection.Row, Selection.Column).Value '余り感心しないが
  File_fullpath = ThisWorkbook.Path & "\" & File_name & "_j.txt"
  
'ファイルの読み込みと出力
  '''Open File_name & "_j.txt" For Output As #1
  Open File_fullpath For Output As #1

ということです。(変数宣言の追加は省略しました)
・ツリー全体表示

【78790】Re:セル内で改行した文字列をコピーしたい
お礼  匿名希望  - 17/1/23(月) 17:26 -

引用なし
パスワード
   独覚さんのVBAを試したら上手くコピペ出来ました。
ありがとうございます。
・ツリー全体表示

【78789】Re:セル内で改行した文字列をコピーしたい
回答  独覚  - 17/1/23(月) 17:13 -

引用なし
パスワード
   ▼匿名希望 さん:
こんなのではどうでしょう?

Sub tst()
  Dim IN_RANGE  As Range
  Dim OUT_RANGE  As Range
  Dim WK_TXT   As Variant
  Dim LOOP_CNT  As Long
  
  With Worksheets("Sheet1")
    Set IN_RANGE = .Range("A1")
    Set OUT_RANGE = .Range("B1")
    
    Do Until IN_RANGE.Value = ""
      WK_TXT = Split(IN_RANGE.Value, Chr(10))
      For LOOP_CNT = 0 To UBound(WK_TXT)
        OUT_RANGE = WK_TXT(LOOP_CNT)
        Set OUT_RANGE = OUT_RANGE.Offset(1, 0)
      Next
      Set IN_RANGE = IN_RANGE.Offset(1, 0)
    Loop
  End With
  
  
End Sub
・ツリー全体表示

【78788】Re:セル内で改行した文字列をコピーしたい
お礼  匿名希望  - 17/1/23(月) 16:52 -

引用なし
パスワード
   やっぱりマクロやVBAでは無理ですか
まめさんありがとうございます。
・ツリー全体表示

【78787】Re:セル内で改行した文字列をコピーしたい
回答  まめ  - 17/1/23(月) 16:38 -

引用なし
パスワード
   ▼匿名希望 さん:
アナログな方法ですが、

1.Excelで該当セルをコピー
2.WordやOutlook等に貼り付け
3.WordやOutlookの該当文字列をコピー
4.Excelに貼り付け

で、希望の形に貼り付けられますよ。
・ツリー全体表示

【78786】Re:ふりがなの表示/非表示
お礼  まめ  - 17/1/23(月) 16:33 -

引用なし
パスワード
   ▼独覚 さん:
ありがとうございます。

凄いですね。
私は気がつきませんでした。

参考にさせて頂きます。
・ツリー全体表示

【78785】セル内で改行した文字列をコピーしたい
質問  匿名希望  - 17/1/23(月) 16:27 -

引用なし
パスワード
   例)
A1セル内に
あか12
いぬ34
A2セル内に
うし56
えんぴつ78
おに910
とセル内の文字列をコピーしたいのですが、コピーしたいセルが1000以上もあります。1000以上のセル内に文字列が1行のセルだったり、文字列が5行のセルだったりとセルによってバラバラです。
コピーした文字列を隣のB1に「あか12」、B2に「いぬ34」、B3に「うし56」…という様に貼り付けをしたいのですがどうすればいいのでしょうか?
・ツリー全体表示

【78784】Re:ふりがなの表示/非表示
発言  独覚  - 17/1/23(月) 16:13 -

引用なし
パスワード
   ▼まめ さん:
発言が途中に入っているので気付き辛いので念のため。

78783で2007でも実行可能なVBAを挙げました。
・ツリー全体表示

【78783】Re:ふりがなの表示/非表示
発言  独覚  - 17/1/23(月) 15:50 -

引用なし
パスワード
   ▼まめ さん:
一応これだと2007でも2010でもできました。
ただ、どんな場合でも大丈夫かは自信がありませんが。
(PhoneticsとPhoneticの違いに注意)
Sub ふりがなの表示()

  Dim mySelect As Range

  For Each mySelect In Selection.Cells

    If mySelect.Phonetic.Visible = True Then
      mySelect.Phonetic.Visible = False
    Else

      With mySelect
        .SetPhonetic
        .Phonetics.Alignment = xlPhoneticAlignDistributed
        .Phonetics.CharacterType = xlKatakana
        .Phonetics.Font.Size = 6
      End With
      mySelect.Phonetic.Visible = True
    End If
  Next

End Sub
・ツリー全体表示

【78782】Re:ふりがなの表示/非表示
お礼  まめ  - 17/1/23(月) 15:47 -

引用なし
パスワード
   ▼独覚 さん:
わざわざご確認頂き、ありがとうございます。

バージョンの問題とわかったので、他の方法で判定できなければ諦めます。
(会社のPCが2007なので、どうしようもなく。)

ちょっと悲しいですが、下記で代用できますし。
  
  Application.SendKeys Keys:="%hgs", Wait:=True

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

【78781】Re:ふりがなの表示/非表示
発言  独覚  - 17/1/23(月) 15:39 -

引用なし
パスワード
   ▼まめ さん:
私のほうでも2007で試してみましたが2007ではふりがな表示になっていないセルで
If mySelect.Phonetics.Visible = True Then
がエラーになっていました。
・ツリー全体表示

【78780】Re:ふりがなの表示/非表示
質問  まめ  - 17/1/23(月) 15:13 -

引用なし
パスワード
   ▼独覚 さん:
追加で確認したところ、「On Error Resume Next」を付けなければ、

    If mySelect.Phonetics.Visible = True Then

でも、エラーが出ていることが分かりました。

そのため、私の構文でも独覚さんの構文でも、下記だけが処理されていたようです。

      mySelect.Phonetics.Visible = False

ふりがなが表示されているかされていないかを判定する構文はあるのでしょうか?
・ツリー全体表示

【78779】Re:ふりがなの表示/非表示
回答  まめ  - 17/1/23(月) 14:56 -

引用なし
パスワード
   ▼独覚 さん:
おっしゃるとおり、「ひらがな」ではなく「ふりがな」ですね。
重ねて失礼しました。

美しい構文ありがとうございます。

ただ、頂いたものでも「ひらがなが表示されていなかった場合は表示」が挙動しません。

なお、当方の環境は「Windows7+Excel2007」です。
独覚さんの環境で正しく挙動しているのであれば、バージョンの問題ですね。
・ツリー全体表示

【78778】Re:ひらがなの表示/非表示
発言  独覚  - 17/1/23(月) 14:31 -

引用なし
パスワード
   ▼まめ さん:
結局「ひらがな」ではなく「ふりがな」なんですね?

また「ふりがな」は「全角カタカナ」でいいんですね?

また、Excelのバージョンはなんでしょうか?
こちらではWindows7+Excel2010で

>・ふりがなが表示されていた場合は非表示
>・ふりがなが表示されていなかった場合は表示(ふりがな設定がなければ自動設定)
>・ふりがなが表示されていなかった場合は表示
(「ひらがな」を「ふりがな」に修正済み。

という挙動になっています。

あとVBAのほうは

Sub ふりがなの表示()
 
   On Error Resume Next

  Dim mySelect As Range

  For Each mySelect In Selection.Cells

    If mySelect.Phonetics.Visible = True Then
      mySelect.Phonetics.Visible = False
    Else

      If mySelect.Characters.PhoneticCharacters = "" Then
        With mySelect
          .SetPhonetic
          .Phonetics.Visible = True
          .Phonetics.Alignment = xlPhoneticAlignDistributed
          .Phonetics.CharacterType = xlKatakana
          .Phonetics.Font.Size = 6
        End With
      End If
      mySelect.Phonetics.Visible = True
    End If
  Next

End Sub
でも。
・ツリー全体表示

【78777】Re:ひらがなの表示/非表示
質問  まめ  - 17/1/23(月) 14:11 -

引用なし
パスワード
   説明不足で申し訳ありません。

冒頭に記載した↓
・ひらがなが表示されていた場合は非表示
・ひらがなが表示されていなかった場合は表示(ひらがな設定がなければ自動設定)
・ひらがなが表示されていなかった場合は表示

をVBAで判定して処理されるようにしたいのですが、実行すると
・ひらがなが表示されていた場合は非表示

だけ実行されてしまい、表示されていなかった場合の挙動が上手くいきません。

また、単純に「ひらがなが表示されていなかった場合は表示」を下記の構文で書いたところ、エラーとなってしまいます。

 If mySelect.Phonetics.Visible = False Then

それぞれのパートは不自然ではないのですが、ひらがなが表示されているかされていないかの判定が上手くできません。
・ツリー全体表示

【78776】Re:ひらがなの表示/非表示
発言  独覚  - 17/1/23(月) 13:56 -

引用なし
パスワード
   ▼まめ さん:
単にふりがなを振るだけであればお書きのVBAでいいように思いますが何が
問題なのかを説明してください。

もしかして「ひらがな」で「ふりがな」を振りたいのでしょうか?

その場合は
.Phonetics.CharacterType = xlKatakana

.Phonetics.CharacterType = xlHiragana
で。
・ツリー全体表示

【78775】ひらがなの表示/非表示
質問  まめ  - 17/1/23(月) 13:30 -

引用なし
パスワード
   ・ひらがなが表示されていたら非表示
・ひらがなが表示されていなかったら表示(ひらがな設定がなければ自動設定)
・ひらがなが表示されていなかったら表示

を再現したいのですが、何が間違っているのでしょうか?


Sub ふりがなの表示()
  
  On Error Resume Next

  Dim mySelect As Range

  For Each mySelect In Selection.Cells

    If mySelect.Phonetics.Visible = True Then
      mySelect.Phonetics.Visible = False
      GoTo Jump
    End If

    If mySelect.Characters.PhoneticCharacters = "" Then
      With mySelect
        .SetPhonetic
        .Phonetics.Visible = True
        .Phonetics.Alignment = xlPhoneticAlignDistributed
        .Phonetics.CharacterType = xlKatakana
        .Phonetics.Font.Size = 6
      End With
      GoTo Jump
    End If

    If mySelect.Characters.PhoneticCharacters <> "" Then
      With mySelect
        .Phonetics.Visible = True
        .Phonetics.Alignment = xlPhoneticAlignDistributed
        .Phonetics.CharacterType = xlKatakana
        .Phonetics.Font.Size = 6
      End With
      GoTo Jump
    End If

Jump:

  Next

End Sub
・ツリー全体表示

【78774】Re:エクセルの指定セルをテキストデータ...
回答  γ  - 17/1/23(月) 7:09 -

引用なし
パスワード
   > 元のエクセルがあるフォルダと同じフォルダ内に作成するためには、

そのマクロが記載されているブックのフォルダは
ThisWorkbook.Path
で得られます。

テキストファイルの操作にあたって、
「フォルダ名を付けたファイル名」(フルパス名)を使うことです。
間の"\"を忘れないようにしてください。
・ツリー全体表示

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