Excel VBA質問箱 IV

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

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


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

【82352】Re:セル内重複文字削除
発言  マナ  - 24/8/19(月) 22:05 -

引用なし
パスワード
   ▼マクロ勉強中です。。 さん:

>こちらはエラーにはなりませんでした。

であれば、test2をステップ実行(F8)で、
どの行でエラーが発生するのか確認してください。
・ツリー全体表示

【82351】Re:セル内重複文字削除
回答  マクロ勉強中です。。  - 24/8/19(月) 18:47 -

引用なし
パスワード
   ▼マナ さん:
こちらはエラーにはなりませんでした。
・ツリー全体表示

【82350】Re:セル内重複文字削除
発言  マナ  - 24/8/19(月) 7:19 -

引用なし
パスワード
   ▼マクロ勉強中です。。 さん:

これはエラーになりますか。

Sub test3()
  Dim d As Object
  Set d = CreateObject("scripting.dictionary")
End Sub

 Sub test4()
  MsgBox "test"
End Sub
・ツリー全体表示

【82349】Re:セル内重複文字削除
回答  マクロ勉強中です。。  - 24/8/19(月) 6:54 -

引用なし
パスワード
   ▼マナ さん:
>どの行でエラーになるのでしょうか?


確認の仕方が間違っているのかもしれませんが、
どの行の赤字になっているわけでもなく、エラー箇所がわかりません。
・ツリー全体表示

【82348】Re:セル内重複文字削除
発言  マナ  - 24/8/18(日) 23:34 -

引用なし
パスワード
   ▼マクロ勉強中です。。 さん:
>
どの行でエラーになるのでしょうか?
・ツリー全体表示

【82347】Re:セル内重複文字削除
回答  マクロ勉強中です。。  - 24/8/18(日) 23:21 -

引用なし
パスワード
   ▼マナ さん:
素人過ぎて原因がわからず申し訳ないのですが、

このコンポーネントのライセンス情報が見つかりません。
デザイン環境でこの機能を使うために必要なライセンスがありません。

と出てしまいます。。。
・ツリー全体表示

【82346】Re:セル内重複文字削除
発言  マナ  - 24/8/18(日) 23:08 -

引用なし
パスワード
   ▼マクロ勉強中です。。 さん:

Sub test2()
  Dim d As Object, d2 As Object, d3 As Object
  Dim r As Range, c As Range
  Dim e
  
  If TypeName(Selection) <> "Range" Then Exit Sub
  Set r = Selection
  If r.Columns.Count > 1 Then Exit Sub
  If WorksheetFunction.CountA(r) = 0 Then Exit Sub
  r.Columns(2).ClearContents
  
  Set d = CreateObject("scripting.dictionary")
  Set d2 = CreateObject("scripting.dictionary")
  Set d3 = CreateObject("scripting.dictionary")
  
  For Each c In r
    For Each e In Split(c.Value, " ")
      If Not d.exists(e) Then
        d(e) = True
        d2(e) = True
      End If
    Next
    If d2.Count > 0 Then
      d3(d3.Count) = Join(d2.keys, " ")
      d2.RemoveAll
    End If
  Next
  
  r(1, 2).Resize(d3.Count).Value = WorksheetFunction.Transpose(d3.items)
  
End Sub
・ツリー全体表示

【82345】Re:セル内重複文字削除
回答  マクロ勉強中です。。  - 24/8/18(日) 22:22 -

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

実行してみたのですが、

このコンポーネントのライセンス情報が見つかりません。デザイン環境でこの機能を使うために必要なライセンスがありません。

と出てしまいました。。
・ツリー全体表示

【82344】Re:セル内重複文字削除
発言  マナ  - 24/8/18(日) 20:00 -

引用なし
パスワード
   ▼マクロ勉強中です。。 さん:

Sub test()
  Dim d As Object, a1 As Object, a2 As Object
  Dim r As Range, c As Range
  Dim e
  
  If TypeName(Selection) <> "Range" Then Exit Sub
  Set r = Selection
  If r.Columns.Count > 1 Then Exit Sub
  If WorksheetFunction.CountA(r) = 0 Then Exit Sub
  r.Columns(2).ClearContents
  
  Set d = CreateObject("scripting.dictionary")
  Set a1 = CreateObject("system.collections.arraylist")
  Set a2 = CreateObject("system.collections.arraylist")
  
  For Each c In r
    For Each e In Split(c.Value, " ")
      If Not d.exists(e) Then
        d(e) = True
        a1.Add e
      End If
    Next
    If a1.Count > 0 Then
      a2.Add Join(a1.toarray, " ")
      a1.Clear
    End If
  Next
  
  r(1, 2).Resize(a2.Count).Value = WorksheetFunction.Transpose(a2.toarray)
  
End Sub
・ツリー全体表示

【82343】セル内重複文字削除
質問  マクロ勉強中です。。  - 24/8/18(日) 18:17 -

引用なし
パスワード
   素人なので、至らない点あればすみません。


選択したセル内に含まれる、重複した文字を、1文字のみ残して
その他の重複文字を削除する方法を教えていただきたいのです。

例)
うさぎ ねこ いぬ  (←これで1セル)
いぬ とり さる  (←これで1セル)
いるか さかな ハムスター  (←これで1セル)
うさぎ ハムスター  (←これで1セル)
カエル いぬ パンダ  (←これで1セル)

↓実行後

例)
うさぎ ねこ いぬ  (←これで1セル)
とり さる  (←これで1セル)
いるか さかな ハムスター  (←これで1セル)
カエル パンダ  (←これで1セル)


うさぎからパンダまでの5行&#10006;&#65039;5セルのを選択した状態で、マクロを実行すると、
例の重複した文字の、うさぎ、いぬ、ハムスター の、文字それぞれ一つを残して
その他は削除される。といった感じのコードは作れますでしょうか?

また、削除後にセル内に文字が無くなった場合は、上の行に繰り越したいです。

(※例で挙げた動物は、実際の消したい文字とは異なります)
・ツリー全体表示

【82342】Re:エクセルでPDFをインポートすると
発言  マナ  - 24/8/6(火) 15:00 -

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

ここはエクセルのVBA(マクロ)に関する質問掲示板です。
・ツリー全体表示

【82341】エクセルでPDFをインポートすると
質問  Jhon  - 24/8/6(火) 13:21 -

引用なし
パスワード
   エクセルでPDFをインポートしてデータを抜き取ってサマリを作成していますが、どんどん重くなって、今ではファイルオープンに20分位かかってしまいます。シート等削除しても2Mの容量のまま減りません。何かがキャッシュされているのか調べてもわからないので、ご存じの方ご教示いただけますでしょうか。どうぞよろしくお願いいたします。
・ツリー全体表示

【82340】Re:VBAで背景色を変えたい
お礼  ロケットマン E-MAIL  - 24/8/6(火) 9:50 -

引用なし
パスワード
   無事動きました。
何度もお教えいただきありがとうございました。

▼マナ さん:
・ツリー全体表示

【82339】Re:VBAで背景色を変えたい
発言  マナ  - 24/8/5(月) 19:37 -

引用なし
パスワード
   ▼ロケットマン さん:

こんな感じでしょうか
>
'ThisWorkbookモジュール
Option Explicit

Private Sub Workbook_Open()
  Application.OnKey "^+W", "ChangeCellColor"
  Application.OnKey "^+E", "ChangeCellColor2"
  Application.OnKey "^+C", "ChangeCellColor3"
End Sub

'標準モジュール
Option Explicit

Sub ChangeCellColor()
  Static changeCount As Integer

  If TypeName(Selection) <> "Range" Then Exit Sub
  changeCount = changeCount + 1

  Select Case changeCount
    Case 1
      Selection.Interior.Color = RGB(255, 255, 0) ' 黄色
    Case 2
      Selection.Interior.Color = RGB(255, 165, 0) ' オレンジ
    Case 3
      Selection.Interior.Color = RGB(255, 204, 0) ' 濃い黄色
      changeCount = 0 ' カウントをリセット
  End Select
End Sub


Sub ChangeCellColor2()
  Static changeCount As Integer

  If TypeName(Selection) <> "Range" Then Exit Sub
  changeCount = changeCount + 1
  
  Select Case changeCount
    Case 1
      Selection.Interior.Color = RGB(204, 0, 255) ' 紫
    Case 2
      Selection.Interior.Color = RGB(202, 237, 251) ' 水色
    Case 3
      Selection.Interior.Color = RGB(0, 0, 255) ' 青
      changeCount = 0 ' カウントをリセット
  End Select
End Sub


Sub ChangeCellColor3()
  If TypeName(Selection) <> "Range" Then Exit Sub
  Selection.Interior.ColorIndex = xlColorIndexNone
End Sub
・ツリー全体表示

【82338】Re:VBAで背景色を変えたい
質問  ロケットマン E-MAIL  - 24/8/5(月) 17:12 -

引用なし
パスワード
   ▼マナ さん:
再度お教えいただきありがとうございます。
上記以外にも色を設定していたのですが、
それ以外はうまくいき、1つ目の黄色のみ1つのセルしか色がかわりませんでした。
(cellcolor2と3はうまくいきました。)
結構探したんですが、どこが間違っているかわからずです。。。。
お力添えいただけますと幸いです。


Dim changeCount As Integer
Dim changeCount2 As Integer
Dim changeCount3 As Integer

Private Sub Workbook_Open()
  changeCount = 0
  Application.OnKey "^+W", "ChangeCellColor"
End Sub

Sub ChangeCellColor()
  changeCount = changeCount + 1
  
  Select Case changeCount
    Case 1
      Selection.Interior.Color = RGB(255, 255, 0) ' 黄色
    Case 2
      Selection.Interior.Color = RGB(255, 165, 0) ' オレンジ
    Case 3
      Selection.Interior.Color = RGB(255, 204, 0) ' 濃い黄色
      changeCount = 0 ' カウントをリセット
  End Select
End Sub

Private Sub Workbook2_Open()
  changeCount2 = 0
  Application.OnKey "^+E", "ChangeCellColor2"
End Sub

Sub ChangeCellColor2()
  changeCount2 = changeCount2 + 1
  
  Select Case changeCount2
    Case 1
      Selection.Interior.Color = RGB(204, 0, 255) ' 紫
    Case 2
      Selection.Interior.Color = RGB(202, 237, 251) ' 水色
    Case 3
      Selection.Interior.Color = RGB(0, 0, 255) ' 青
      changeCount2 = 0 ' カウントをリセット
  End Select
End Sub

Private Sub Workbook3_Open()
  changeCount3 = 0
  Application.OnKey "^+C", "ChangeCellColor3"
End Sub

Sub ChangeCellColor3()
  changeCount3 = changeCount3 + 1
  
  Select Case changeCount3
    Case 1
      Selection.Interior.Color = RGB(255, 255, 255) ' 白色
      changeCount3 = 0 ' カウントをリセット
  End Select
End Sub
・ツリー全体表示

【82337】Re:VBAで背景色を変えたい
発言  マナ  - 24/8/5(月) 16:58 -

引用なし
パスワード
   ▼ロケットマン さん:

Sub ChangeCellColor()
  If TypeName(Selection) <> "Range" Then Exit Sub
  changeCount = changeCount + 1

選択しているものがセル以外
(図形とか)ならば
何もしないで終了する
・ツリー全体表示

【82336】Re:VBAで背景色を変えたい
質問  ロケットマン E-MAIL  - 24/8/5(月) 16:30 -

引用なし
パスワード
   お教えいただきありがとうございます。
私の知識不足で申し訳ないのですが、
1)の追加はどの部分に差し込めばよいでしょうか??

▼マナ さん:
>▼ロケットマン さん:
>
>1)↓を1行目に追加。セルを選択した状態でのみ実行
>If TypeName(Selection) <> "Range" Then Exit Sub
>  
>   
>2)ActiveVell をSelectionに変更
>>ActiveCell.Interior.Color
>   ↓
> Selection.Interior.Color
・ツリー全体表示

【82335】Re:VBAで背景色を変えたい
発言  マナ  - 24/8/5(月) 15:18 -

引用なし
パスワード
   ▼ロケットマン さん:

1)↓を1行目に追加。セルを選択した状態でのみ実行
If TypeName(Selection) <> "Range" Then Exit Sub
  
   
2)ActiveVell をSelectionに変更
>ActiveCell.Interior.Color
   ↓
Selection.Interior.Color
・ツリー全体表示

【82334】VBAで背景色を変えたい
質問  ロケットマン E-MAIL  - 24/8/5(月) 14:48 -

引用なし
パスワード
   Ctrl + Shift + Wでエクセルの背景色を変えたいと思っています。
以下の内容で1つのセルであれば色を変えることができたのですが、
複数セルを選択している場合に色がかわりません。
お分かりのなる方お教えいただけますと幸いです。


Dim changeCount As Integer

Private Sub Workbook_Open()
  changeCount = 0
  Application.OnKey "^+W", "ChangeCellColor"
End Sub

Sub ChangeCellColor()
  changeCount = changeCount + 1
  
  Select Case changeCount
    Case 1
      ' 選択されたすべてのセルに黄色を設定
      ActiveCell.Interior.Color = RGB(255, 255, 0) ' 黄色
      End With
    Case 2
      ' 選択されたすべてのセルにオレンジを設定
      ActiveCell.Interior.Color = RGB(255, 165, 0) ' オレンジ
      End With
    Case 3
      ' 選択されたすべてのセルに濃い黄色を設定
      ActiveCell.Interior.Color = RGB(255, 204, 0) ' 濃い黄色
      End With
      changeCount = 0 ' カウントをリセット
  End Select
End Sub
・ツリー全体表示

【82333】Re:Wordで塗りつぶしされ文字だけ検索し...
発言  マナ  - 24/7/28(日) 9:04 -

引用なし
パスワード
   Wordに関する質問は
www.vbalab.sakura.ne.jp/vbaqa/c-board.cgi?id=word
・ツリー全体表示

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