Excel VBA質問箱 IV

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

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


4 / 3837 ページ ←次へ | 前へ→

【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
・ツリー全体表示

【82332】Wordで塗りつぶしされ文字だけ検索したい...
質問  M E-MAIL  - 24/7/27(土) 20:28 -

引用なし
パスワード
   Wordで特定の色で塗りつぶしをされた文字だけを検索したいです。
chatGPTに聞いた下記のコードでは、エラーメッセージが出て検索できませんでした。
どこが違うのか、ご教授いただけますと幸いです。


Sub FindShadedText()
  Dim searchColor As Long
  Dim rng As Range
  Dim found As Boolean
  
  ' 検索する塗りつぶし色を設定(RGB値)
  searchColor = RGB(255, 255, 0) ' 黄色の例

  ' ドキュメントの全範囲を設定
  Set rng = ActiveDocument.Content
  
  ' 範囲の最初に移動
  rng.Collapse Direction:=wdCollapseStart
  
  ' 塗りつぶし色を検索
  found = False
  Do While rng.Find.Execute(FindText:="", Format:=True)
    If rng.Shading.BackgroundPatternColor = searchColor Then
      rng.Select
      found = True
      Exit Do
    End If
    rng.Collapse Direction:=wdCollapseEnd
  Loop
  
  If Not found Then
    MsgBox "指定された塗りつぶし色のテキストが見つかりませんでした。"
  End If
End Sub
・ツリー全体表示

【82331】Re:指定回数分行をコピーして下に挿入する
発言  マナ  - 24/7/24(水) 19:26 -

引用なし
パスワード
   ▼迷える羊 さん:

Dim ws As Worksheet
Dim k As Long, n As Long

Set ws = Worksheets("Sheet1")
  
For k = ws.Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
  n = ws.Cells(k, 5).Value
  If n > 1 Then
    ws.Rows(k).Copy
    ws.Rows(k).Resize(n - 1).Insert
  End If
Next k
・ツリー全体表示

【82330】指定回数分行をコピーして下に挿入する
質問  迷える羊  - 24/7/24(水) 12:31 -

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

シートに横並びに同じカテゴリの項目が入っており、
E列でそのカテゴリが何個あるのか数えています。
そしてその個数分縦に並べ直したい、というものです。
ただ、まだ縦に並べる前の段階、
コピーして挿入という箇所すら出来てません、

    E列 F列   G列   H列
1行目  3  いちご  みかん  メロン
2行目  2  バナナ  すいか
3行目  0
4行目  1  もも

    E列 F列   G列   H列
1行目  3  いちご
2行目  3  みかん
3行目  3  メロン
4行目  2  バナナ
5行目  2  すいか
6行目  0
7行目  1  もも

−−
Dim 数 As Long, i As Long
  
最終行 = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row

On Error Resume Next
For 変数● = 最終行 To 1 Step -1
数 = Worksheets("Sheet1").Range(変数●, 5)
 For i = 0 To 数 - 1
  Worksheets("Sheet1").Rows(変数●).Copy
  Worksheets("Sheet1").Rows(変数● + 1).Insert
 Next i
Next 変数●
On Error GoTo 0
−−
どのようにしたら動きますでしょうか?
・ツリー全体表示

【82329】Re:エラー原因のご教示をお願いいたします
お礼  かずこ  - 24/6/25(火) 16:37 -

引用なし
パスワード
   ご返信ありがとうございます。

希望の動作できました。


n と mを足す方の発想ができませんでした(汗)


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

【82328】Re:VBAの中でセル範囲を任意に設定する
お礼  まっちゃん E-MAIL  - 24/6/25(火) 14:55 -

引用なし
パスワード
   ありがとうございました。
助かりました。
・ツリー全体表示

【82327】Re:エラー原因のご教示をお願いいたします
発言  マナ  - 24/6/25(火) 14:30 -

引用なし
パスワード
   ▼かずこ さん:

For n = 1 To maxcol Step 6
  For m = 1 To 5
      lastRow = Cells(Rows.Count, n).End(xlUp).Row
      ws.Cells(1, n + m).Resize(18).Cut ws.Cells(lastRow + 2, n)
  Next m
Next n
・ツリー全体表示

【82326】Re:VBAの中でセル範囲を任意に設定する
発言  マナ  - 24/6/25(火) 14:28 -

引用なし
パスワード
   ▼まっちゃん さん:

>  ActiveCell.Range("A1:B1").Select

この行を削除してください
> 
・ツリー全体表示

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